Ryan Lane has submitted this change and it was merged.
Change subject: Allow grains to be set with a single value
......................................................................
Allow grains to be set with a single value
Some grains should be set explicitly with a single value, rather
than a hash/array of values.
Change-Id: I9e24551c26bf659059d29c2b0eee2f7636a0dd92
---
M modules/salt/files/grain-ensure.py
M modules/salt/manifests/grain.pp
2 files changed, 31 insertions(+), 9 deletions(-)
Approvals:
Ori.livneh: Looks good to me, but someone else must approve
Ryan Lane: Looks good to me, approved
jenkins-bot: Verified
diff --git a/modules/salt/files/grain-ensure.py
b/modules/salt/files/grain-ensure.py
index 4db7eff..f89e892 100644
--- a/modules/salt/files/grain-ensure.py
+++ b/modules/salt/files/grain-ensure.py
@@ -59,6 +59,11 @@
return False
+def setval(grain, value):
+ caller.function('grains.setval', grain, value)
+ return True
+
+
def contains(grain, value):
return value in get(grain)
@@ -72,7 +77,7 @@
return False
-actions = {'add': add, 'remove': remove, 'contains': contains}
+actions = {'add': add, 'remove': remove, 'contains': contains, 'set': setval}
ap = argparse.ArgumentParser()
ap.add_argument('action', choices=actions)
diff --git a/modules/salt/manifests/grain.pp b/modules/salt/manifests/grain.pp
index 2577174..415f61a 100644
--- a/modules/salt/manifests/grain.pp
+++ b/modules/salt/manifests/grain.pp
@@ -15,26 +15,43 @@
# If 'present', adds value to grain. If 'absent', removes it.
# Defaults to 'present'.
#
+# [*replace*]
+# If true, replaces the value in the grain. If false, it adds the value.
+# Defaults to true.
+#
# === Examples
#
# salt::grain { 'deployment_target':
# value => 'parsoid',
# }
#
+# salt::grain { 'cluster':
+# value => 'eqiad_text_cache',
+# replace => true,
+# }
+#
define salt::grain(
$value,
$grain = $title,
$ensure = present,
+ $replace = false,
) {
- if $ensure == 'absent' {
- exec { "/usr/local/sbin/grain-ensure remove ${grain} ${value}":
- onlyif => "/usr/local/sbin/grain-ensure contains ${grain} ${value}",
- require => File['/usr/local/sbin/grain-ensure'],
+ $command = $replace ? {
+ true => 'set',
+ default => 'add',
+ }
+ case $ensure {
+ 'absent': {
+ exec { "/usr/local/sbin/grain-ensure remove ${grain} ${value}":
+ onlyif => "/usr/local/sbin/grain-ensure contains ${grain} ${value}",
+ require => File['/usr/local/sbin/grain-ensure'],
+ }
}
- } else {
- exec { "/usr/local/sbin/grain-ensure add ${grain} ${value}":
- unless => "/usr/local/sbin/grain-ensure contains ${grain} ${value}",
- require => File['/usr/local/sbin/grain-ensure'],
+ 'present': {
+ exec { "/usr/local/sbin/grain-ensure ${command} ${grain} ${value}":
+ unless => "/usr/local/sbin/grain-ensure contains ${grain} ${value}",
+ require => File['/usr/local/sbin/grain-ensure'],
+ }
}
}
}
--
To view, visit https://gerrit.wikimedia.org/r/81372
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I9e24551c26bf659059d29c2b0eee2f7636a0dd92
Gerrit-PatchSet: 2
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Ryan Lane <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: Ryan Lane <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits