From ceb1c59cbec0f336a76a4ffa145259e199b62084 Mon Sep 17 00:00:00 2001
From: Jonathan Lent <jlent@stanford.edu>
Date: Fri, 3 Jun 2016 07:39:07 -0700
Subject: [PATCH] Fixes related to Oracle Linux, see NEWS

---
 NEWS                                    |  6 ++++++
 manifests/cron.pp                       | 12 ++++++++----
 manifests/os.pp                         | 12 ++++++------
 manifests/os/{oel.pp => oraclelinux.pp} |  4 ++--
 manifests/puppetclient.pp               |  5 +++--
 5 files changed, 25 insertions(+), 14 deletions(-)
 rename manifests/os/{oel.pp => oraclelinux.pp} (58%)

diff --git a/NEWS b/NEWS
index 0b0c2c8..47adea6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+release/004.062 (2016-06-03)
+
+    [os] Fix references applicable to Oracle Linux
+    [cron] Address cron-related package not available on Oracle Linux
+    [puppetclient] Address lack of versionlock on Oracle Linux (jlent)
+
 release/004.061 (2016-04-21)
 
     [os] Add some parameters to the base::os::debian class to make apt use
diff --git a/manifests/cron.pp b/manifests/cron.pp
index b7096a3..d0df03d 100644
--- a/manifests/cron.pp
+++ b/manifests/cron.pp
@@ -26,11 +26,15 @@ class base::cron(
   elsif ($::osfamily == 'RedHat') {
     $crond = 'crond'
     if ($::lsbmajdistrelease == '6') {
-      package {
-        'cronie-noanacron': ensure => present;
-        'cronie-anacron':   ensure => absent;
+      # OL6 appears to be stuck with cronie-anacron
+      if ($::operatingsystem == 'OracleLinux') {
+        package { 'cronie-anacron':   ensure => present }
+      } else { # Otherwise, prefer cronie-noanacron
+        package {
+          'cronie-noanacron': ensure => present;
+          'cronie-anacron':   ensure => absent;
+        }
       }
-
     }
     file { [ '/etc/cron.d/dailyjobs', '/etc/cron.d/0hourly' ]:
       ensure => absent
diff --git a/manifests/os.pp b/manifests/os.pp
index c01247b..5158717 100644
--- a/manifests/os.pp
+++ b/manifests/os.pp
@@ -4,12 +4,12 @@
 class base::os {
   
   case $::operatingsystem {
-    'Debian': { include base::os::debian }
-    'Ubuntu': { include base::os::ubuntu }
-    'RedHat': { include base::os::redhat }
-    'CentOS': { include base::os::centos }
-    'OEL':    { include base::os::oel }
-    default:  { include base::os::debian }
+    'Debian':      { include base::os::debian }
+    'Ubuntu':      { include base::os::ubuntu }
+    'RedHat':      { include base::os::redhat }
+    'CentOS':      { include base::os::centos }
+    'OracleLinux': { include base::os::oraclelinux }
+    default:       { include base::os::debian }
   }
   
   base::os::motd { '/etc/motd':
diff --git a/manifests/os/oel.pp b/manifests/os/oraclelinux.pp
similarity index 58%
rename from manifests/os/oel.pp
rename to manifests/os/oraclelinux.pp
index c77d36f..ab2d95c 100644
--- a/manifests/os/oel.pp
+++ b/manifests/os/oraclelinux.pp
@@ -1,7 +1,7 @@
 #
-# Rules specific to Oracle Enterprise Linux systems. 
+# Rules specific to Oracle Linux systems. 
 # Simply stubbing for now 
-class base::os::oel {
+class base::os::oraclelinux {
 
     # For now, let's pretend it's just RedHat
     include base::os::redhat
diff --git a/manifests/puppetclient.pp b/manifests/puppetclient.pp
index 2c9e20d..5502d05 100644
--- a/manifests/puppetclient.pp
+++ b/manifests/puppetclient.pp
@@ -9,14 +9,15 @@ class base::puppetclient {
   }
 
   # pin puppet and facter versions on RHELish systems
-  if ($::osfamily == 'RedHat') {
+  # However, OracleLinux (6, at least) does not have yum-versionlock available
+  if (($::osfamily == 'RedHat') and ($::operatingsystem != 'OracleLinux')) {
     include base::yumtools::yum_puppet_lock
     package { 'puppet':
       ensure  => present,
       require => [ Base::Puppetclient::Config['/etc/puppet/puppet.conf'],
                   Class['base::yumtools::yum_puppet_lock'] ],
     }
-  } else { # Debianish systems; pinning handled at repository level
+  } else { # Debianish systems and Oracle Linux
       package { 'puppet':
         ensure  => present,
         require => Base::Puppetclient::Config['/etc/puppet/puppet.conf'],
-- 
GitLab