Giuseppe Lavagetto has submitted this change and it was merged.

Change subject: wmflib: add ensure_directory() and ensure_link()
......................................................................


wmflib: add ensure_directory() and ensure_link()

It's a common pattern to want to map a generic ensure parameter (that is,
present / absent) to an ensure for a directory or link File resource.
ensure_directory() and ensure_link() are convenience functions for doing that
concisely.

Change-Id: Ida5c809809379a1a35eca2e02bb6b28f36808f05
---
M modules/admin/manifests/user.pp
M modules/apache/manifests/conf.pp
M modules/diamond/manifests/collector.pp
M modules/limn/manifests/instance.pp
M modules/mediawiki/manifests/monitoring/webserver.pp
A modules/wmflib/lib/puppet/parser/functions/ensure_directory.rb
A modules/wmflib/lib/puppet/parser/functions/ensure_link.rb
7 files changed, 43 insertions(+), 37 deletions(-)

Approvals:
  Giuseppe Lavagetto: Verified; Looks good to me, approved
  20after4: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/modules/admin/manifests/user.pp b/modules/admin/manifests/user.pp
index bdf6268..bad917d 100644
--- a/modules/admin/manifests/user.pp
+++ b/modules/admin/manifests/user.pp
@@ -55,11 +55,6 @@
 {
     validate_re($ensure, '^(present|absent)$')
 
-    $ensure_dir = $ensure ? {
-        'absent'   => 'absent',
-        'present'  => 'directory',
-    }
-
     user { $name:
         ensure     => $ensure,
         name       => $name,
@@ -77,7 +72,7 @@
     if $ensure == 'present' {
 
         file { "/home/${name}":
-            ensure       => $ensure_dir,
+            ensure       => ensure_directory($ensure),
             source       => [
                 "puppet:///modules/admin/home/${name}/",
                 'puppet:///modules/admin/home/skel/',
@@ -105,7 +100,7 @@
         }
 
         file { "/home/${name}/.ssh":
-            ensure  => $ensure_dir,
+            ensure  => ensure_directory($ensure),
             owner   => $name,
             group   => $gid,
             mode    => '0700',
diff --git a/modules/apache/manifests/conf.pp b/modules/apache/manifests/conf.pp
index 1b9cc5d..5ed4209 100644
--- a/modules/apache/manifests/conf.pp
+++ b/modules/apache/manifests/conf.pp
@@ -53,10 +53,6 @@
 
     $title_safe  = regsubst($title, '[\W_]', '-', 'G')
     $conf_file   = sprintf('%02d-%s.conf', $priority, $title_safe)
-    $link_ensure = $ensure ? {
-        present => link,
-        default => absent,
-    }
 
     file { "/etc/apache2/${conf_type}-available/${conf_file}":
         ensure  => $ensure,
@@ -65,7 +61,7 @@
     }
 
     file { "/etc/apache2/${conf_type}-enabled/${conf_file}":
-        ensure  => $link_ensure,
+        ensure  => ensure_link($ensure),
         target  => "/etc/apache2/${conf_type}-available/${conf_file}",
         notify  => Service['apache2'],
     }
diff --git a/modules/diamond/manifests/collector.pp 
b/modules/diamond/manifests/collector.pp
index 11b1885..f8594e5 100644
--- a/modules/diamond/manifests/collector.pp
+++ b/modules/diamond/manifests/collector.pp
@@ -64,13 +64,8 @@
     }
 
     if $source {
-        $directory_ensure = $ensure ? {
-            present => directory,
-            default => absent,
-        }
-
         file { "/usr/share/diamond/collectors/${name}":
-            ensure => $directory_ensure,
+            ensure => ensure_directory($ensure),
             owner  => 'root',
             group  => 'root',
             mode   => '0755',
diff --git a/modules/limn/manifests/instance.pp 
b/modules/limn/manifests/instance.pp
index 7e1a0ca..bfe2be0 100644
--- a/modules/limn/manifests/instance.pp
+++ b/modules/limn/manifests/instance.pp
@@ -46,20 +46,16 @@
 
   # symlink $base_directory/var/{css,js,vendor}
   # in $var_directory
-  $symlink_ensure = $ensure ? {
-    present => 'link',
-    default => 'absent',
-  }
   file { "${var_directory}/css":
-    ensure => $symlink_ensure,
+    ensure => ensure_link($ensure),
     target => "${base_directory}/var/css",
   }
   file { "${var_directory}/js":
-    ensure => $symlink_ensure,
+    ensure => ensure_link($ensure),
     target => "${base_directory}/var/js",
   }
   file { "${var_directory}/vendor":
-    ensure => $symlink_ensure,
+    ensure => ensure_link($ensure),
     target => "${base_directory}/var/vendor",
   }
 
@@ -95,4 +91,4 @@
     provider   => 'upstart',
     subscribe  => File["/etc/init/limn-${name}.conf"],
   }
-}
\ No newline at end of file
+}
diff --git a/modules/mediawiki/manifests/monitoring/webserver.pp 
b/modules/mediawiki/manifests/monitoring/webserver.pp
index 90af363..5e73199 100644
--- a/modules/mediawiki/manifests/monitoring/webserver.pp
+++ b/modules/mediawiki/manifests/monitoring/webserver.pp
@@ -2,16 +2,6 @@
     include ::stdlib
     include ::apache
 
-    $dir_ensure = $ensure ? {
-        'present' => 'directory',
-        default   => $ensure
-    }
-
-    $link_ensure = $ensure ? {
-        'present' => 'link',
-        default   => $ensure
-    }
-
     $endpoints = {
         'apc' => 'apc_stats.php'
     }
@@ -19,7 +9,7 @@
 
     # Basic vhost files
     file { '/var/www/monitoring':
-        ensure  => $dir_ensure,
+        ensure  => ensure_directory($ensure),
         owner   => 'root',
         group   => 'root',
         mode    => '0555',
diff --git a/modules/wmflib/lib/puppet/parser/functions/ensure_directory.rb 
b/modules/wmflib/lib/puppet/parser/functions/ensure_directory.rb
new file mode 100644
index 0000000..a846cb6
--- /dev/null
+++ b/modules/wmflib/lib/puppet/parser/functions/ensure_directory.rb
@@ -0,0 +1,17 @@
+# ensure_directory(): converts converts 'true'/'present' to 'directory'
+# and 'false'/'absent' to 'absent'.
+module Puppet::Parser::Functions
+  newfunction(
+    :ensure_directory,
+    :type => :rvalue,
+    :doc  => "Converts 'true'/'present' to 'directory' and 'false'/'absent' to 
'absent'"
+  ) do |args|
+    case args[0]
+      when 'present', 'true', true then 'directory'
+      when 'absent', 'false', false then args[0]
+      else raise Puppet::ParseError, 'ensure_directory(): invalid argument'
+    end
+  end
+end
+
+# vim: set ts=2 sw=2 et :
diff --git a/modules/wmflib/lib/puppet/parser/functions/ensure_link.rb 
b/modules/wmflib/lib/puppet/parser/functions/ensure_link.rb
new file mode 100644
index 0000000..a36b9c8
--- /dev/null
+++ b/modules/wmflib/lib/puppet/parser/functions/ensure_link.rb
@@ -0,0 +1,17 @@
+# ensure_link(): converts converts 'true'/'present' to 'link'
+# and 'false'/'absent' to 'absent'.
+module Puppet::Parser::Functions
+  newfunction(
+    :ensure_link,
+    :type => :rvalue,
+    :doc  => "Converts 'true'/'present' to 'link' and 'false'/'absent' to 
'absent'"
+  ) do |args|
+    case args[0]
+      when 'present', 'true', true then 'link'
+      when 'absent', 'false', false then args[0]
+      else raise Puppet::ParseError, 'ensure_link(): invalid argument'
+    end
+  end
+end
+
+# vim: set ts=2 sw=2 et :

-- 
To view, visit https://gerrit.wikimedia.org/r/148007
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ida5c809809379a1a35eca2e02bb6b28f36808f05
Gerrit-PatchSet: 2
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ori.livneh <o...@wikimedia.org>
Gerrit-Reviewer: 20after4 <mmod...@wikimedia.org>
Gerrit-Reviewer: Alexandros Kosiaris <akosia...@wikimedia.org>
Gerrit-Reviewer: Giuseppe Lavagetto <glavage...@wikimedia.org>
Gerrit-Reviewer: Rush <r...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to