]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/keystone/manifests/service.pp
add stackforge/keystone to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / keystone / manifests / service.pp
diff --git a/3rdparty/modules/keystone/manifests/service.pp b/3rdparty/modules/keystone/manifests/service.pp
new file mode 100644 (file)
index 0000000..63c148d
--- /dev/null
@@ -0,0 +1,124 @@
+# == Class keystone::service
+#
+# Encapsulates the keystone service to a class.
+# This allows resources that require keystone to
+# require this class, which can optionally
+# validate that the service can actually accept
+# connections.
+#
+# === Parameters
+#
+# [*ensure*]
+# (optional) The desired state of the keystone service
+# Defaults to 'running'
+#
+# [*service_name*]
+# (optional) The name of the keystone service
+# Defaults to $::keystone::params::service_name
+#
+# [*enable*]
+# (optional) Whether to enable the keystone service
+# Defaults to true
+#
+# [*hasstatus*]
+# (optional) Whether the keystone service has status
+# Defaults to true
+#
+# [*hasrestart*]
+# (optional) Whether the keystone service has restart
+# Defaults to true
+#
+# [*provider*]
+# (optional) Provider for keystone service
+# Defaults to $::keystone::params::service_provider
+#
+# [*validate*]
+# (optional) Whether to validate the service is working
+# after any service refreshes
+# Defaults to false
+#
+# [*admin_token*]
+# (optional) The admin token to use for validation
+# Defaults to undef
+#
+# [*admin_endpoint*]
+# (optional) The admin endpont to use for validation
+# Defaults to 'http://localhost:35357/v2.0'
+#
+# [*retries*]
+# (optional) Number of times to retry validation
+# Defaults to 10
+#
+# [*delay*]
+# (optional) Number of seconds between validation attempts
+# Defaults to 2
+#
+# [*insecure*]
+# (optional) Whether to validate keystone connections
+# using the --insecure option with keystone client.
+# Defaults to false
+#
+# [*cacert*]
+# (optional) Whether to validate keystone connections
+# using the specified argument with the --os-cacert option
+# with keystone client.
+# Defaults to undef
+#
+class keystone::service(
+  $ensure         = 'running',
+  $service_name   = $::keystone::params::service_name,
+  $enable         = true,
+  $hasstatus      = true,
+  $hasrestart     = true,
+  $provider       = $::keystone::params::service_provider,
+  $validate       = false,
+  $admin_token    = undef,
+  $admin_endpoint = 'http://localhost:35357/v2.0',
+  $retries        = 10,
+  $delay          = 2,
+  $insecure       = false,
+  $cacert         = undef,
+) {
+  include keystone::params
+
+  service { 'keystone':
+    ensure     => $ensure,
+    name       => $service_name,
+    enable     => $enable,
+    hasstatus  => $hasstatus,
+    hasrestart => $hasrestart,
+    provider   => $provider
+  }
+
+  if $insecure {
+    $insecure_s = '--insecure'
+  } else {
+    $insecure_s = ''
+  }
+
+  if $cacert {
+    $cacert_s = "--os-cacert ${cacert}"
+  } else {
+    $cacert_s = ''
+  }
+
+  if $validate and $admin_token and $admin_endpoint {
+    $cmd = "keystone --os-endpoint ${admin_endpoint} --os-token ${admin_token} ${insecure_s} ${cacert_s} user-list"
+    $catch = 'name'
+    exec { 'validate_keystone_connection':
+      path          => '/usr/bin:/bin:/usr/sbin:/sbin',
+      provider      => shell,
+      command       => $cmd,
+      subscribe     => Service['keystone'],
+      refreshonly   => true,
+      tries         => $retries,
+      try_sleep     => $delay
+    }
+
+    Exec['validate_keystone_connection'] -> Keystone_user<||>
+    Exec['validate_keystone_connection'] -> Keystone_role<||>
+    Exec['validate_keystone_connection'] -> Keystone_tenant<||>
+    Exec['validate_keystone_connection'] -> Keystone_service<||>
+    Exec['validate_keystone_connection'] -> Keystone_endpoint<||>
+  }
+}