Blob Blame History Raw
From a87a101049dd3397a0aa92cb6eb7057260664e52 Mon Sep 17 00:00:00 2001
From: Martin Magr <mmagr@redhat.com>
Date: Wed, 20 Aug 2014 16:29:16 +0200
Subject: [PATCH] Add manage_service feature

puppet-swift lacks of disabling service managing. This patch adds
$manage_service and $enabled parameter to all relevant classes.

Closes-bug: #1359823
Change-Id: I3d632e3a26e9394d03d94089ae704904bf77aa51
---
 manifests/proxy.pp             | 44 ++++++++++++++++++++++++++----------------
 manifests/storage/account.pp   | 20 +++++++++++++++----
 manifests/storage/container.pp | 26 ++++++++++++++++++-------
 manifests/storage/generic.pp   | 18 +++++++++++++----
 manifests/storage/object.pp    | 20 +++++++++++++++----
 5 files changed, 92 insertions(+), 36 deletions(-)

diff --git a/manifests/proxy.pp b/manifests/proxy.pp
index 41b1463..6863609 100644
--- a/manifests/proxy.pp
+++ b/manifests/proxy.pp
@@ -47,22 +47,24 @@
 #
 class swift::proxy(
   $proxy_local_net_ip,
-  $port = '8080',
-  $pipeline = ['healthcheck', 'cache', 'tempauth', 'proxy-server'],
-  $workers = $::processorcount,
-  $allow_account_management = true,
-  $account_autocreate = true,
-  $log_headers = 'False',
-  $log_udp_host = '',
-  $log_udp_port = '',
-  $log_address = '/dev/log',
-  $log_level = 'INFO',
-  $log_facility = 'LOG_LOCAL1',
-  $log_handoffs = true,
-  $read_affinity = undef,
-  $write_affinity = undef,
+  $port                      = '8080',
+  $pipeline                  = ['healthcheck', 'cache', 'tempauth', 'proxy-server'],
+  $workers                   = $::processorcount,
+  $allow_account_management  = true,
+  $account_autocreate        = true,
+  $log_headers               = 'False',
+  $log_udp_host              = '',
+  $log_udp_port              = '',
+  $log_address               = '/dev/log',
+  $log_level                 = 'INFO',
+  $log_facility              = 'LOG_LOCAL1',
+  $log_handoffs              = true,
+  $read_affinity             = undef,
+  $write_affinity            = undef,
   $write_affinity_node_count = undef,
-  $package_ensure = 'present'
+  $manage_service            = true,
+  $enabled                   = true,
+  $package_ensure            = 'present'
 ) {
 
   include swift::params
@@ -126,10 +128,18 @@ class swift::proxy(
     before  => Class[$required_classes],
   }
 
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
+  }
+
   service { 'swift-proxy':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::proxy_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     hasstatus => true,
     subscribe => Concat['/etc/swift/proxy-server.conf'],
diff --git a/manifests/storage/account.pp b/manifests/storage/account.pp
index 1ce6865..111e91c 100644
--- a/manifests/storage/account.pp
+++ b/manifests/storage/account.pp
@@ -1,24 +1,36 @@
 class swift::storage::account(
+  $manage_service = true,
+  $enabled        = true,
   $package_ensure = 'present'
 ) {
   swift::storage::generic { 'account':
+    manage_service => $manage_service,
+    enabled        => $enabled,
     package_ensure => $package_ensure,
   }
 
   include swift::params
 
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
+  }
+
   service { 'swift-account-reaper':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::account_reaper_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     require   => Package['swift-account'],
   }
 
   service { 'swift-account-auditor':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::account_auditor_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     require   => Package['swift-account'],
   }
diff --git a/manifests/storage/container.pp b/manifests/storage/container.pp
index a4002d8..23d28ac 100644
--- a/manifests/storage/container.pp
+++ b/manifests/storage/container.pp
@@ -5,27 +5,39 @@
 #   field for containers. Defaults to one entry list '127.0.0.1'.
 #
 class swift::storage::container(
-  $package_ensure = 'present',
+  $manage_service     = true,
+  $enabled            = true,
+  $package_ensure     = 'present',
   $allowed_sync_hosts = ['127.0.0.1'],
 ) {
   swift::storage::generic { 'container':
+    manage_service => $manage_service,
+    enabled        => $enabled,
     package_ensure => $package_ensure
   }
 
   include swift::params
 
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
+  }
+
   service { 'swift-container-updater':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::container_updater_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     require   => Package['swift-container'],
   }
 
   service { 'swift-container-auditor':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::container_auditor_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     require   => Package['swift-container'],
   }
@@ -41,8 +53,8 @@ class swift::storage::container(
       target => '/lib/init/upstart-job',
     }
     service { 'swift-container-sync':
-      ensure    => running,
-      enable    => true,
+      ensure    => $service_ensure,
+      enable    => $enabled,
       provider  => $::swift::params::service_provider,
       require   => File['/etc/init/swift-container-sync.conf', '/etc/init.d/swift-container-sync']
     }
diff --git a/manifests/storage/generic.pp b/manifests/storage/generic.pp
index 2f84f2e..89eb6fe 100644
--- a/manifests/storage/generic.pp
+++ b/manifests/storage/generic.pp
@@ -18,6 +18,8 @@
 #
 # Copyright 2011 Puppetlabs Inc, unless otherwise noted.
 define swift::storage::generic(
+  $manage_service   = true,
+  $enabled          = true,
   $package_ensure   = 'present',
   $service_provider = $::swift::params::service_provider
 ) {
@@ -42,19 +44,27 @@ define swift::storage::generic(
     group  => 'swift',
   }
 
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
+  }
+
   service { "swift-${name}":
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => inline_template("<%= scope.lookupvar('::swift::params::${name}_service_name') %>"),
-    enable    => true,
+    enable    => $enabled,
     hasstatus => true,
     provider  => $service_provider,
     subscribe => Package["swift-${name}"],
   }
 
   service { "swift-${name}-replicator":
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => inline_template("<%= scope.lookupvar('::swift::params::${name}_replicator_service_name') %>"),
-    enable    => true,
+    enable    => $enabled,
     hasstatus => true,
     provider  => $service_provider,
     subscribe => Package["swift-${name}"],
diff --git a/manifests/storage/object.pp b/manifests/storage/object.pp
index 1e49101..c26d246 100644
--- a/manifests/storage/object.pp
+++ b/manifests/storage/object.pp
@@ -1,24 +1,36 @@
 class swift::storage::object(
+  $manage_service = true,
+  $enabled        = true,
   $package_ensure = 'present'
 ) {
   swift::storage::generic { 'object':
+    manage_service => $manage_service,
+    enabled        => $enabled,
     package_ensure => $package_ensure
   }
 
   include swift::params
 
+  if $manage_service {
+    if $enabled {
+      $service_ensure = 'running'
+    } else {
+      $service_ensure = 'stopped'
+    }
+  }
+
   service { 'swift-object-updater':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::object_updater_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     require   => Package['swift-object'],
   }
 
   service { 'swift-object-auditor':
-    ensure    => running,
+    ensure    => $service_ensure,
     name      => $::swift::params::object_auditor_service_name,
-    enable    => true,
+    enable    => $enabled,
     provider  => $::swift::params::service_provider,
     require   => Package['swift-object'],
   }
-- 
1.9.3