Add Nova as Pacemaker resource

Constraints based on vncproxy are commented due to it not starting
with websockify < 0.6, see [1]

1. http://lists.openstack.org/pipermail/openstack-dev/2014-October/048535.html

Co-Authored-By: Jiri Stransky <jistr@redhat.com>

Change-Id: Ie51014bf563920d2e75c5e38942bc42ddc2a3939
This commit is contained in:
Giulio Fidente 2015-05-26 22:22:17 -04:00
parent 8e48448f8f
commit 6824554cdb
1 changed files with 112 additions and 12 deletions

View File

@ -431,28 +431,28 @@ if hiera('step') >= 3 {
class { '::nova::api' :
sync_db => $sync_db,
manage_service => $non_pcmk_start,
enabled => $non_pcmk_start,
manage_service => false,
enabled => false,
}
class { '::nova::cert' :
manage_service => $non_pcmk_start,
enabled => $non_pcmk_start,
manage_service => false,
enabled => false,
}
class { '::nova::conductor' :
manage_service => $non_pcmk_start,
enabled => $non_pcmk_start,
manage_service => false,
enabled => false,
}
class { '::nova::consoleauth' :
manage_service => $non_pcmk_start,
enabled => $non_pcmk_start,
manage_service => false,
enabled => false,
}
class { '::nova::vncproxy' :
manage_service => $non_pcmk_start,
enabled => $non_pcmk_start,
manage_service => false,
enabled => false,
}
class { '::nova::scheduler' :
manage_service => $non_pcmk_start,
enabled => $non_pcmk_start,
manage_service => false,
enabled => false,
}
include ::nova::network::neutron
@ -931,6 +931,106 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service["${::neutron::params::l3_agent_service}"],
Pacemaker::Resource::Service["${::neutron::params::metadata_agent_service}"]]
}
# Nova
pacemaker::resource::service { $::nova::params::api_service_name :
clone_params => "interleave=true",
op_params => "monitor start-delay=10s",
}
pacemaker::resource::service { $::nova::params::conductor_service_name :
clone_params => "interleave=true",
op_params => "monitor start-delay=10s",
}
pacemaker::resource::service { $::nova::params::consoleauth_service_name :
clone_params => "interleave=true",
op_params => "monitor start-delay=10s",
require => Pacemaker::Resource::Service[$::keystone::params::service_name],
}
pacemaker::resource::service { $::nova::params::vncproxy_service_name :
clone_params => "interleave=true",
op_params => "monitor start-delay=10s",
}
pacemaker::resource::service { $::nova::params::scheduler_service_name :
clone_params => "interleave=true",
op_params => "monitor start-delay=10s",
}
pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':
constraint_type => 'order',
first_resource => "${::keystone::params::service_name}-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::Service[$::keystone::params::service_name]],
}
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]],
}
# FIXME(gfidente): novncproxy will not start unless websockify is updated to 0.6
# which is not the case for f20 nor f21; ucomment when it becomes available
#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]],
}
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]],
}
}
} #END STEP 4