Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: modules/adblockplus/manifests/host.pp

Issue 29336590: Issue 3638 - Introduce class adblockplus::host (Closed)
Patch Set: Created Feb. 18, 2016, 3:09 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | modules/adblockplus/manifests/init.pp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: modules/adblockplus/manifests/host.pp
diff --git a/modules/adblockplus/manifests/host.pp b/modules/adblockplus/manifests/host.pp
new file mode 100644
index 0000000000000000000000000000000000000000..b35d00a9c6c66fc8230ca8b2aa5b946baf87b47e
--- /dev/null
+++ b/modules/adblockplus/manifests/host.pp
@@ -0,0 +1,88 @@
+# == Type: adblockplus::host
+#
+# Manage host information for any node associated with the same authority.
+#
+# This is currently a wrapper around base::explicit_host_record(), but meant
+# to become the official resource for host information within the adblockplus::*
+# namespace.
+#
+# === Parameters:
+#
+# Below please find a description of those parameters which are considered
+# official:
+#
+# [*ensure*]
+# Whether to ensure the host record being 'present' or 'absent'/'purged'.
+#
+# All others have been introduced to resemble the parameter list of type
+# base::explicit_host_record() and subject to change after the base module
+# has been removed (see https://issues.adblockplus.org/ticket/3574).
+#
+# === Properties:
+#
+# The properties listed below are official symbols that may become regular
+# parameters at some point:
+#
+# [*fqdn*]
+# The fully qualified domain name associated with the host.
+#
+# [*ips*]
+# A list of one or more IPv4 and IPv6 addresses associated with the host.
+#
+# [*rsa_public_key*]
+# The host's public RSA key, i.e "ssh-rsa AA.... host1.example.com".
+#
+# For now the values are computed based on the legacy input values.
+#
+# === Examples:
+#
+# adblockplus::host {'node1':
+# ensure => 'present',
+# ip => '10.8.0.1',
+# }
+#
+# adblockplus::host {'node2':
+# ensure => 'absent',
+# ip => '10.8.0.2',
+# }
+#
+# $node1 = Adblockplus::Host['node1']
+# $public_key = getparam($node1, 'rsa_public_key')
+# $ensure = getparam(Adblockplus::Host['node2'], 'ensure')
+#
+define adblockplus::host (
+ $ensure = 'present',
+ $ip,
+ $ssh_public_key = undef,
+ $role = undef,
+ $dns = undef,
+ $groups = undef,
+) {
+
+ include adblockplus
+ include base
+
+ # Officially exported and supported instance properties replacing
+ # undocumented magic, see https://issues.adblockplus.org/ticket/3638
+ $fqdn = $dns ? {undef => "$name.$adblockplus::authority", default => "$dns"}
+ $ips = is_array($ip) ? {true => $ip, default => [$ip]}
+ $rsa_public_key = "ssh-rsa $ssh_public_key $fqdn"
+
+ # To become removed together with class base,
+ # see https://issues.adblockplus.org/ticket/3574
+ base::explicit_host_record {$name:
+ ip => $ips,
+ ssh_public_key => $ssh_public_key,
+ role => $role,
+ dns => $fqdn,
+ groups => $groups,
+ }
+
+ # Extracted from base::explicit_host_record() to ensure continuity with
+ # existing records, despite the newly centralized $fqdn computation
+ @host {$fqdn:
+ ensure => $ensure,
+ ip => $ips[0],
+ tag => 'adblockplus::host',
+ }
+}
« no previous file with comments | « no previous file | modules/adblockplus/manifests/init.pp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld