(MODULES-3581) modulesync [067d08a]
[puppet-modules/puppetlabs-apt.git] / manifests / setting.pp
index 78f007fdbc6ff9815c5287fc67dab8c2b1501ec6..b0fb62b1debd8fb5d90c1f86cb0f0bdc5e778a7f 100644 (file)
@@ -1,15 +1,12 @@
 define apt::setting (
-  $setting_type,
-  $base_name  = $title,
-  $priority   = 50,
-  $ensure     = file,
-  $source     = undef,
-  $content    = undef,
-  $file_perms = {},
+  $priority      = 50,
+  $ensure        = file,
+  $source        = undef,
+  $content       = undef,
+  $notify_update = true,
 ) {
 
-  $_file = merge($::apt::file_defaults, $file_perms)
-
+  include 'apt::params'
   if $content and $source {
     fail('apt::setting cannot have both content and source')
   }
@@ -18,13 +15,18 @@ define apt::setting (
     fail('apt::setting needs either of content or source')
   }
 
-  validate_re($setting_type, ['conf', 'pref', 'list'])
   validate_re($ensure,  ['file', 'present', 'absent'])
-  validate_string($base_name)
+  validate_bool($notify_update)
+
+  $title_array = split($title, '-')
+  $setting_type = $title_array[0]
+  $base_name = join(delete_at($title_array, 0), '-')
+
+  validate_re($setting_type, ['\Aconf\z', '\Apref\z', '\Alist\z'], "apt::setting resource name/title must start with either 'conf-', 'pref-' or 'list-'")
 
   unless is_integer($priority) {
     # need this to allow zero-padded priority.
-    validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer.')
+    validate_re($priority, '^\d+$', 'apt::setting priority must be an integer or a zero-padded integer')
   }
 
   if $source {
@@ -35,21 +37,28 @@ define apt::setting (
     validate_string($content)
   }
 
-  if $setting_type == 'list' {
+  if ($setting_type == 'list') or ($setting_type == 'pref') {
     $_priority = ''
   } else {
     $_priority = $priority
   }
 
-  $_path = $::apt::config_files[$setting_type]['path']
-  $_ext  = $::apt::config_files[$setting_type]['ext']
+  $_path = $::apt::params::config_files[$setting_type]['path']
+  $_ext  = $::apt::params::config_files[$setting_type]['ext']
+
+  if $notify_update {
+    $_notify = Class['apt::update']
+  } else {
+    $_notify = undef
+  }
 
   file { "${_path}/${_priority}${base_name}${_ext}":
     ensure  => $ensure,
-    owner   => $_file['owner'],
-    group   => $_file['group'],
-    mode    => $_file['mode'],
+    owner   => 'root',
+    group   => 'root',
+    mode    => '0644',
     content => $content,
     source  => $source,
+    notify  => $_notify,
   }
 }