Move nova constraints from controller manifest to each service
authorMichele Baldessari <michele@acksyn.org>
Tue, 26 Jul 2016 12:21:49 +0000 (14:21 +0200)
committerMichele Baldessari <michele@acksyn.org>
Wed, 27 Jul 2016 20:49:40 +0000 (22:49 +0200)
Currently we are still creating all the pacemaker constraints for nova
in the main overcloud_controller_pacemaker.pp manifest file.

Let's move those to each role where they belong. Note that given
that a constraint depends on two separate pacemaker resources it is
a bit arbitrary in which file they end up being (the one of the first
resource or the second one).

Change-Id: I96a3a313d15fac820b020feae0568437c2cbade3

manifests/profile/pacemaker/nova/api.pp
manifests/profile/pacemaker/nova/conductor.pp
manifests/profile/pacemaker/nova/consoleauth.pp

index 8a6dc8d..5e8f15f 100644 (file)
@@ -48,6 +48,40 @@ class tripleo::profile::pacemaker::nova::api (
     pacemaker::resource::service { $::nova::params::api_service_name:
       clone_params => 'interleave=true',
     }
+
+    pacemaker::constraint::base { 'nova-vncproxy-then-nova-api-constraint':
+      constraint_type => 'order',
+      first_resource  => "${::nova::params::vncproxy_service_name}-clone",
+      second_resource => "${::nova::params::api_service_name}-clone",
+      first_action    => 'start',
+      second_action   => 'start',
+      require         => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],
+                          Pacemaker::Resource::Service[$::nova::params::api_service_name]],
+    }
+    pacemaker::constraint::colocation { 'nova-api-with-nova-vncproxy-colocation':
+      source  => "${::nova::params::api_service_name}-clone",
+      target  => "${::nova::params::vncproxy_service_name}-clone",
+      score   => 'INFINITY',
+      require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],
+                  Pacemaker::Resource::Service[$::nova::params::api_service_name]],
+    }
+    pacemaker::constraint::base { 'nova-api-then-nova-scheduler-constraint':
+      constraint_type => 'order',
+      first_resource  => "${::nova::params::api_service_name}-clone",
+      second_resource => "${::nova::params::scheduler_service_name}-clone",
+      first_action    => 'start',
+      second_action   => 'start',
+      require         => [Pacemaker::Resource::Service[$::nova::params::api_service_name],
+                          Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],
+    }
+    pacemaker::constraint::colocation { 'nova-scheduler-with-nova-api-colocation':
+      source  => "${::nova::params::scheduler_service_name}-clone",
+      target  => "${::nova::params::api_service_name}-clone",
+      score   => 'INFINITY',
+      require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],
+                  Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],
+    }
+
   }
 
 }
index 3d5e41e..3e390e0 100644 (file)
@@ -47,6 +47,25 @@ class tripleo::profile::pacemaker::nova::conductor (
     pacemaker::resource::service { $::nova::params::conductor_service_name:
       clone_params => 'interleave=true',
     }
+
+    pacemaker::constraint::base { 'nova-scheduler-then-nova-conductor-constraint':
+      constraint_type => 'order',
+      first_resource  => "${::nova::params::scheduler_service_name}-clone",
+      second_resource => "${::nova::params::conductor_service_name}-clone",
+      first_action    => 'start',
+      second_action   => 'start',
+      require         => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],
+                          Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+    }
+    pacemaker::constraint::colocation { 'nova-conductor-with-nova-scheduler-colocation':
+      source  => "${::nova::params::conductor_service_name}-clone",
+      target  => "${::nova::params::scheduler_service_name}-clone",
+      score   => 'INFINITY',
+      require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],
+                  Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+    }
+
+
     # If Service['nova-compute'] is in catalog, make sure we start it after
     # nova-conductor pcmk resource.
     # Also make sure to restart nova-compute if nova-conductor pcmk resource changed
index fb9428a..ad538c4 100644 (file)
@@ -47,6 +47,40 @@ class tripleo::profile::pacemaker::nova::consoleauth (
     pacemaker::resource::service { $::nova::params::consoleauth_service_name:
       clone_params => 'interleave=true',
     }
+
+    pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':
+      constraint_type => 'order',
+      first_resource  => 'openstack-core-clone',
+      second_resource => "${::nova::params::consoleauth_service_name}-clone",
+      first_action    => 'start',
+      second_action   => 'start',
+      require         => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+                          Pacemaker::Resource::Ocf['openstack-core']],
+    }
+    pacemaker::constraint::colocation { 'nova-consoleauth-with-openstack-core':
+      source  => "${::nova::params::consoleauth_service_name}-clone",
+      target  => 'openstack-core-clone',
+      score   => 'INFINITY',
+      require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+                  Pacemaker::Resource::Ocf['openstack-core']],
+    }
+    pacemaker::constraint::base { 'nova-consoleauth-then-nova-vncproxy-constraint':
+      constraint_type => 'order',
+      first_resource  => "${::nova::params::consoleauth_service_name}-clone",
+      second_resource => "${::nova::params::vncproxy_service_name}-clone",
+      first_action    => 'start',
+      second_action   => 'start',
+      require         => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+                          Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],
+    }
+    pacemaker::constraint::colocation { 'nova-vncproxy-with-nova-consoleauth-colocation':
+      source  => "${::nova::params::vncproxy_service_name}-clone",
+      target  => "${::nova::params::consoleauth_service_name}-clone",
+      score   => 'INFINITY',
+      require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+                  Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],
+    }
+
   }
 
 }