Limit cluster task cross-dependency on primary-cluster

Cluster task should cross-depend on primary-cluster only if current
node has primary-something role. Otherwise a loop listed in the
referenced bug occurs and deployment breaks.

Also, that CR makes change in rabbitmq networking trigger OpenStack
tasks. That fixes the old assumption that RabbitMQ always lives on
controllers. Now changes in networking of nodes with RabbitMQ role
will also trigger modification of configs for OpenStack services on
other nodes, updating rabbit_hosts parameter.

For the same reason (changes in rabbitmq should trigger OpenStack
tasks) all OpenStack tasks now cross-depend on rabbitmq.

Finally the CR fixes typo in openstack-cinder/tasks.yaml:
cross-depened-by -> cross-dependend-by

Closes-Bug: #1651066

Change-Id: I8b262ef73c9c62ce5a71f0a5eee001b61ba9ecb1
This commit is contained in:
Dmitry Mescheryakov 2017-01-11 13:50:30 +04:00
parent e0db4580d7
commit ab1c4dd826
13 changed files with 72 additions and 33 deletions

View File

@ -5,6 +5,7 @@
required_for: [ceilometer-controller, openstack-controller]
requires: [openstack-haproxy]
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: aodh-db
- name: aodh-keystone
condition:
@ -12,7 +13,7 @@
$.ceilometer.enabled and changedAny($.get('rabbit_ha_queues'),
$.rabbit,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.get('amqp_port'),
$.get('kombu_compression'), $.network_scheme, $.aodh,

View File

@ -2,6 +2,7 @@
type: puppet
version: 2.1.0
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: ceilometer-keystone
- name: /top-role-(primary-)?mongo/
groups: [primary-controller, controller]
@ -20,7 +21,7 @@
$.get('service_endpoint'), $.get('use_ssl'), $.get('workers_max'),
$.network_scheme, $.mongo, $.external_mongo,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')), $.get('amqp_hosts'),
$.configuration.get('ceilometer'), $.configuration.get('ceilometer_api_paste_ini'))
parameters:
@ -39,6 +40,7 @@
required_for: [deploy_end]
requires: [ceilometer-controller, top-role-compute]
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: ceilometer-controller
condition:
yaql_exp: >
@ -48,7 +50,7 @@
$.get('region', 'RegionOne'), $.ceilometer, $.get('verbose'),
$.debug, $.get('use_ssl'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')), $.get('amqp_hosts'))
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/ceilometer/compute.pp

View File

@ -23,7 +23,7 @@
$.get('region', 'RegionOne'), $.ironic,
('primary-controller' in $.roles), $.get('kombu_compression'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.get('use_ssl'), $.murano,
$.configuration.get('glance_api'), $.configuration.get('glance_cache'),

View File

@ -16,11 +16,12 @@
$.get('region', 'RegionOne'), $.get('external_lb'),
$.get('database_vip'), $.get('heat_db_name'), $.storage,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')), $.get('amqp_hosts'),
$.configuration.get('heat'), $.configuration.get('heat_api_paste_ini'),
$.get('heat_ha_engine'))
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: heat-db
- name: heat-keystone
- name: memcached
@ -42,6 +43,7 @@
condition:
yaql_exp: *heat_enabled
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: primary-heat
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/heat/heat.pp

View File

@ -3,6 +3,7 @@
version: 2.1.0
groups: [primary-controller, controller]
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: ironic-db
- name: ironic-keystone
required_for: [primary-openstack-controller, openstack-controller]
@ -15,7 +16,7 @@
$.get('glance_api_servers'), $.get('default_log_levels'),
$.get('use_syslog'), $.get('syslog_log_facility_ironic'), $.rabbit,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.get('amqp_port'), $.quantum_settings,
('primary-controller' in $.roles), $.get('kombu_compression'),
@ -76,7 +77,7 @@
$.get('use_syslog'), $.get('syslog_log_facility_ironic'),
$.get('syslog_log_facility_nova'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.rabbit,
$.get('nova_report_interval', '60'),

View File

@ -11,7 +11,7 @@
$.get('verbose'), $.get('default_log_levels'), $.get('use_syslog'),
$.get('use_stderr'), $.get('rabbit_ha_queues'), $.get('amqp_port'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.external_dns, $.public_ssl, $.get('use_ssl'),
('primary-controller' in $.roles), $.get('kombu_compression'),
@ -19,6 +19,7 @@
required_for: [deploy_end, controller_remaining_tasks]
requires: [primary-heat, heat, horizon, primary-rabbitmq, rabbitmq]
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: murano-db
- name: murano-keystone
parameters:

View File

@ -14,7 +14,7 @@
- name: cinder-db
- name: cinder-keystone
cross-depened-by:
cross-depended-by:
- name: openstack-controller
role: self
- name: deploy_end
@ -29,7 +29,7 @@
$.get('glance_endpoint'), $.get('glance_api_servers'),
$.get('use_syslog'), $.get('use_stderr'), $.get('verbose'), $.debug,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.get('syslog_log_facility_cinder'),
$.get('cinder_rate_limits'),

View File

@ -18,7 +18,7 @@
$.get('openstack_controller'), $.get('external_lb'), $.quantum_settings,
$.get('database_vip'), $.nova_quota, $.use_vcenter, $.libvirt_type,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.debug, $.use_cow_images, $.get('nova_endpoint'))
cross-depends:

View File

@ -72,7 +72,7 @@
$.ceilometer, $.network_scheme, $.get('use_syslog'),
$.get('use_stderr'), $.get('syslog_log_facility_neutron'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.network_metadata,
$.get('amqp_hosts'), $.get('kombu_compression'))
@ -87,13 +87,18 @@
tags: [primary-neutron]
required_for: [openstack-network-end]
requires: [openstack-network-start, openstack-network-common-config]
cross-depends:
- name: /^(primary-)?rabbitmq$/
condition:
yaql_exp: >
yaql_exp: &network_server_config >
changedAny($.quantum, $.configuration, $.quantum_settings,
$.get('database_vip'), $.network_metadata, $.nova,
$.get('neutron_primary_controller_roles'), $.get('security_groups'),
$.get('neutron_compute_nodes'), $.get('region', 'RegionOne'),
$.get('use_ssl'), $.neutron_advanced_configuration, $.network_scheme)
$.get('use_ssl'), $.neutron_advanced_configuration, $.network_scheme,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
refresh_on: [neutron_plugin_ml2, neutron_config, neutron_api_config]
reexecute_on: [deploy_changes]
parameters:
@ -111,13 +116,9 @@
cross-depends:
- name: primary-openstack-network-server-config
role: 'primary-neutron'
- name: /^(primary-)?rabbitmq$/
condition:
yaql_exp: >
changedAny($.quantum, $.configuration, $.quantum_settings,
$.get('database_vip'), $.network_metadata, $.nova,
$.get('neutron_primary_controller_roles'), $.get('security_groups'),
$.get('neutron_compute_nodes'), $.get('region', 'RegionOne'),
$.get('use_ssl'), $.neutron_advanced_configuration, $.network_scheme)
yaql_exp: *network_server_config
refresh_on: [neutron_plugin_ml2, neutron_config, neutron_api_config]
reexecute_on: [deploy_changes]
parameters:
@ -131,13 +132,18 @@
tags: [primary-neutron]
required_for: [openstack-network-end]
requires: [openstack-network-start, openstack-network-common-config, primary-openstack-network-server-config]
cross-depends:
- name: /^(primary-)?rabbitmq$/
condition:
yaql_exp: &network_plugins_l2 >
changedAny($.quantum, $.configuration, $.fqdn,
$.get('neutron_primary_controller_roles'),
$.get('neutron_compute_nodes'), $.quantum_settings, $.public_ssl,
$.get('use_ssl'), $.get('region'), $.network_scheme, $.network_metadata,
$.neutron_advanced_configuration, $.get('security_groups'))
$.neutron_advanced_configuration, $.get('security_groups'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
refresh_on: [neutron_agent_ovs]
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/plugins/ml2.pp
@ -156,6 +162,7 @@
refresh_on: [neutron_agent_ovs]
cross-depends:
- name: primary-openstack-network-plugins-l2
- name: /^(primary-)?rabbitmq$/
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/plugins/ml2.pp
puppet_modules: /etc/puppet/modules
@ -240,6 +247,7 @@
role: self
- name: openstack-network-routers
role: self
- name: /^(primary-)?rabbitmq$/
cross-depended-by:
- name: openstack-network-end
role: self
@ -249,7 +257,10 @@
changedAny($.quantum, $.neutron_advanced_configuration,
$.get('neutron_controller_roles'), $.get('neutron_compute_nodes'),
$.debug, $.configuration, $.network_scheme, $.network_metadata,
('primary-controller' in $.roles))
('primary-controller' in $.roles),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/l3.pp
puppet_modules: /etc/puppet/modules
@ -270,6 +281,7 @@
- name: openstack-network-networks
- name: openstack-network-routers
- name: primary-openstack-network-agents-l3
- name: /^(primary-)?rabbitmq$/
cross-depended-by:
- name: openstack-network-end
role: self
@ -287,11 +299,16 @@
groups: [compute]
required_for: [openstack-network-end]
requires: [openstack-network-start, openstack-network-common-config, openstack-network-plugins-l2]
cross-depends:
- name: /^(primary-)?rabbitmq$/
refresh_on: [neutron_sriov_agent_config]
condition:
yaql_exp: >
changedAny($.quantum, $.network_scheme,
$.quantum_settings, $.configuration, $.network_metadata)
$.quantum_settings, $.configuration, $.network_metadata,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/sriov.pp
puppet_modules: /etc/puppet/modules
@ -329,11 +346,15 @@
condition:
yaql_exp: &network_agents_dhcp >
changedAny($.quantum, $.configuration, $.debug,
$.neutron_advanced_configuration, $.network_metadata, ('primary-controller' in $.roles))
$.neutron_advanced_configuration, $.network_metadata, ('primary-controller' in $.roles),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
refresh_on: [neutron_dhcp_agent_config]
cross-depends:
- name: /^(primary-)?openstack-network-plugins-l2$/
role: self
- name: /^(primary-)?rabbitmq$/
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/dhcp.pp
puppet_modules: /etc/puppet/modules
@ -353,6 +374,7 @@
- name: primary-openstack-network-agents-dhcp
- name: /^(primary-)?openstack-network-plugins-l2$/
role: self
- name: /^(primary-)?rabbitmq$/
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/dhcp.pp
puppet_modules: /etc/puppet/modules
@ -369,17 +391,21 @@
yaql_exp: &network_agents_metadata >
($.quantum and changed($.quantum)) or
changed($.get('neutron_controller_roles')) or
changedAny($.get('neutron_compute_nodes'),
changedAny($.get('neutron_compute_nodes'),
$.neutron_advanced_configuration, $.debug, $.configuration,
$.get('region'), $.network_metadata, $.get('use_ssl'),
$.quantum_settings, $.get('nova_endpoint'), $.get('nova_metadata_protocol'),
$.get('workers_max'),
('primary-controller' in $.roles))
('primary-controller' in $.roles),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
cross-depends:
- name: /^(primary-)?openstack-network-plugins-l2$/
role: self
- name: /^(primary-)?openstack-network-agents-l3$/
role: self
- name: /^(primary-)?rabbitmq$/
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/metadata.pp
puppet_modules: /etc/puppet/modules
@ -399,6 +425,7 @@
- name: primary-openstack-network-agents-metadata
- name: /(primary-)?openstack-network-plugins-l2/
role: ["/(primary-)?neutron/"]
- name: /^(primary-)?rabbitmq$/
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/openstack-network/agents/metadata.pp
puppet_modules: /etc/puppet/modules

View File

@ -48,7 +48,7 @@
$.get('queue_provider', 'rabbit'), $.quantum_settings,
$.get('memcached_servers', ''),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'),
$.network_metadata.nodes.values().where(
@ -67,6 +67,7 @@
required_for: [enable_cinder_volume_service]
requires: [hosts, firewall]
cross-depends:
- name: /^(primary-)?rabbitmq$/
- name: openstack-cinder
condition:
yaql_exp: >
@ -78,7 +79,7 @@
$.get('use_ssl'), $.get('service_endpoint'), $.get('glance_api_servers'),
$.get('amqp_hosts'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/roles/cinder.pp
@ -91,6 +92,8 @@
groups: [cinder, cinder-block-device]
requires: [top-role-cinder]
required_for: [deploy_end]
cross-depends:
- name: /^(primary-)?rabbitmq$/
condition:
yaql_exp: >
changedAny($.cinder, $.get('cinder_volume_group'),
@ -101,7 +104,7 @@
$.get('use_ssl'), $.get('service_endpoint'), $.get('glance_api_servers'),
$.get('amqp_hosts'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')))
parameters:
puppet_manifest: /etc/puppet/modules/openstack_tasks/examples/roles/enable_cinder.pp
@ -155,7 +158,7 @@
$.network_metadata.vips, $.get('database_vip'),
$.get('neutron_endpoint'), $.get('glance_api_servers'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')),
$.get('amqp_hosts'), $.debug, $.get('verbose'), $.get('use_syslog'),
$.get('syslog_log_facility_ironic'), $.rabbit, $.storage,

View File

@ -12,12 +12,13 @@
$.get('default_log_levels'), $.get('use_syslog'), $.get('use_stderr'),
$.get('rabbit_ha_queues'), $.get('amqp_port'),
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')), $.get('amqp_hosts'),
$.get('external_lb'), $.get('use_ssl'), $.get('kombu_compression'))
cross-depends:
- name: openstack-network-end
- name: horizon
- name: /^(primary-)?rabbitmq$/
- name: sahara-db
- name: sahara-keystone
cross-depended-by:

View File

@ -19,7 +19,7 @@
$.get('swift_ring_min_part_hours'), $.get('deploy_swift_proxy'),
$.get('use_ssl'), $.rabbit,
$.network_metadata.nodes.values().where(
$.node_roles.any($.matches('controller'))).network_roles.select(
$.node_roles.any($.matches('(controller|rabbitmq)'))).network_roles.select(
$.get('mgmt/messaging')), $.get('amqp_hosts'),
$.ceilometer.enabled, $.mp,
$.get('swift_partition'), $.get('deploy_swift_storage')))

View File

@ -22,7 +22,8 @@
primary-database, database,
primary-neutron, neutron]
cross-depends:
- name: primary-cluster
yaql_exp: >
[{name=>'primary-cluster', role=>$.roles.select('primary-' + $)}]
required_for: [deploy_end]
requires: [hosts, firewall, deploy_start]
condition: