From c5fe51147b53e032d2e87cf7c792d8459098b42e Mon Sep 17 00:00:00 2001 From: Alan Bishop Date: Thu, 9 May 2019 09:25:58 -0400 Subject: [PATCH] Use RpcPort for container healthchecks Update healthcheck commands that probe oslo's messaging port to use the RpcPort parameter. Previously, some templates referenced the service's own 'rabbit_port' config setting, which led to malformed healthcheck commands when the 'rabbit_port' settings were deprecated. Update the templates that looked up the port in the RabbitMQService's global_config_settings. Not only did this break the oslo abstraction by referring to a specific messaging backend (rabbit), it broke split-stack deployments in which the RabbitMQService is not actually deployed on the secondary stack's nodes. This patch creates a common healthcheck command using the RpcPort parameter in containers-common.yaml. This allows other templates to reference a common healthcheck command. Other templates that should also use this can be cleaned up in a separate patch. Closes-Bug: #1825342 Change-Id: I0d3974089ae6e6879adab4852715c7a1c1188f7c --- .../aodh/aodh-listener-container-puppet.yaml | 10 +-------- .../aodh/aodh-notifier-container-puppet.yaml | 10 +-------- .../cinder-backup-container-puppet.yaml | 10 +-------- .../cinder-scheduler-container-puppet.yaml | 10 +-------- .../cinder-volume-container-puppet.yaml | 10 +-------- deployment/containers-common.yaml | 14 +++++++++++++ .../heat/heat-engine-container-puppet.yaml | 21 +------------------ .../ironic-conductor-container-puppet.yaml | 10 +-------- .../neutron-metadata-container-puppet.yaml | 10 +-------- .../nova/nova-compute-container-puppet.yaml | 21 +------------------ .../nova/nova-ironic-container-puppet.yaml | 21 +------------------ .../nova/nova-scheduler-container-puppet.yaml | 21 +------------------ .../sahara-engine-container-puppet.yaml | 10 +-------- 13 files changed, 26 insertions(+), 152 deletions(-) diff --git a/deployment/aodh/aodh-listener-container-puppet.yaml b/deployment/aodh/aodh-listener-container-puppet.yaml index 5fe5a88272..18cb5aa27c 100644 --- a/deployment/aodh/aodh-listener-container-puppet.yaml +++ b/deployment/aodh/aodh-listener-container-puppet.yaml @@ -97,15 +97,7 @@ outputs: net: host privileged: false restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [AodhBase, role_data, config_settings, 'aodh::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/aodh/aodh-notifier-container-puppet.yaml b/deployment/aodh/aodh-notifier-container-puppet.yaml index a46d980c91..9f316131da 100644 --- a/deployment/aodh/aodh-notifier-container-puppet.yaml +++ b/deployment/aodh/aodh-notifier-container-puppet.yaml @@ -97,15 +97,7 @@ outputs: net: host privileged: false restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [AodhBase, role_data, config_settings, 'aodh::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/cinder/cinder-backup-container-puppet.yaml b/deployment/cinder/cinder-backup-container-puppet.yaml index d7a53e5702..e76b4c9483 100644 --- a/deployment/cinder/cinder-backup-container-puppet.yaml +++ b/deployment/cinder/cinder-backup-container-puppet.yaml @@ -199,15 +199,7 @@ outputs: net: host privileged: true restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [CinderBase, role_data, config_settings, 'cinder::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: {get_attr: [CinderCommon, cinder_backup_volumes]} environment: {get_attr: [CinderCommon, cinder_backup_environment]} host_prep_tasks: diff --git a/deployment/cinder/cinder-scheduler-container-puppet.yaml b/deployment/cinder/cinder-scheduler-container-puppet.yaml index fd85804c8d..1cde1e405a 100644 --- a/deployment/cinder/cinder-scheduler-container-puppet.yaml +++ b/deployment/cinder/cinder-scheduler-container-puppet.yaml @@ -120,15 +120,7 @@ outputs: net: host privileged: false restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [CinderBase, role_data, config_settings, 'cinder::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/cinder/cinder-volume-container-puppet.yaml b/deployment/cinder/cinder-volume-container-puppet.yaml index 66049d6cd0..00ef28bdfe 100644 --- a/deployment/cinder/cinder-volume-container-puppet.yaml +++ b/deployment/cinder/cinder-volume-container-puppet.yaml @@ -323,15 +323,7 @@ outputs: net: host privileged: true restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [CinderBase, role_data, config_settings, 'cinder::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: {get_attr: [CinderCommon, cinder_volume_volumes]} environment: {get_attr: [CinderCommon, cinder_volume_environment]} host_prep_tasks: {get_attr: [CinderCommon, cinder_volume_host_prep_tasks]} diff --git a/deployment/containers-common.yaml b/deployment/containers-common.yaml index 530ab4db3d..98d91eb321 100644 --- a/deployment/containers-common.yaml +++ b/deployment/containers-common.yaml @@ -42,6 +42,10 @@ parameters: type: string description: Specifies the default CA cert to use if TLS is used for services in the internal network. + RpcPort: + default: 5672 + description: The network port for messaging backend + type: number conditions: @@ -128,3 +132,13 @@ outputs: # container_puppet_apply.sh will copy this to /etc/puppet in the container - /etc/puppet:/tmp/puppet-etc:ro - /usr/share/openstack-puppet/modules:/usr/share/openstack-puppet/modules:ro + + healthcheck_rpc_port: + description: healthcheck command that probes the RpcPort + value: + test: + str_replace: + template: + '/openstack/healthcheck RPCPORT' + params: + RPCPORT: {get_param: RpcPort} diff --git a/deployment/heat/heat-engine-container-puppet.yaml b/deployment/heat/heat-engine-container-puppet.yaml index 44fcc7eb97..892277c09c 100644 --- a/deployment/heat/heat-engine-container-puppet.yaml +++ b/deployment/heat/heat-engine-container-puppet.yaml @@ -122,23 +122,12 @@ resources: HeatEngineLogging: type: OS::TripleO::Services::Logging::HeatEngine - RabbitMQService: - type: OS::TripleO::Services::OsloMessagingRpc - properties: - ServiceData: {get_param: ServiceData} - ServiceNetMap: {get_param: ServiceNetMap} - DefaultPasswords: {get_param: DefaultPasswords} - EndpointMap: {get_param: EndpointMap} - RoleName: {get_param: RoleName} - RoleParameters: {get_param: RoleParameters} - outputs: role_data: description: Role data for the Heat Engine role. value: service_name: heat_engine monitoring_subscription: {get_param: MonitoringSubscriptionHeatEngine} - global_config_settings: {get_attr: [RabbitMQService, role_data, global_config_settings]} config_settings: map_merge: - get_attr: [HeatBase, role_data, config_settings] @@ -261,15 +250,7 @@ outputs: privileged: false stop_grace_period: 60 restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [RabbitMQService, role_data, global_config_settings, 'oslo_messaging_rpc_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/ironic/ironic-conductor-container-puppet.yaml b/deployment/ironic/ironic-conductor-container-puppet.yaml index 38dbfc9fb2..f969a050e1 100644 --- a/deployment/ironic/ironic-conductor-container-puppet.yaml +++ b/deployment/ironic/ironic-conductor-container-puppet.yaml @@ -508,15 +508,7 @@ outputs: net: host privileged: true restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [IronicBase, role_data, config_settings, 'ironic::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/neutron/neutron-metadata-container-puppet.yaml b/deployment/neutron/neutron-metadata-container-puppet.yaml index 75ea4c10c0..0e205719ef 100644 --- a/deployment/neutron/neutron-metadata-container-puppet.yaml +++ b/deployment/neutron/neutron-metadata-container-puppet.yaml @@ -184,15 +184,7 @@ outputs: pid: host privileged: true restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [NeutronBase, role_data, config_settings, 'neutron::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/nova/nova-compute-container-puppet.yaml b/deployment/nova/nova-compute-container-puppet.yaml index c1758cc51d..a9e9d139ef 100644 --- a/deployment/nova/nova-compute-container-puppet.yaml +++ b/deployment/nova/nova-compute-container-puppet.yaml @@ -280,16 +280,6 @@ resources: MySQLClient: type: ../../deployment/database/mysql-client.yaml - RabbitMQService: - type: OS::TripleO::Services::OsloMessagingRpc - properties: - ServiceData: {get_param: ServiceData} - ServiceNetMap: {get_param: ServiceNetMap} - DefaultPasswords: {get_param: DefaultPasswords} - EndpointMap: {get_param: EndpointMap} - RoleName: {get_param: RoleName} - RoleParameters: {get_param: RoleParameters} - NovaComputeCommon: type: ./nova-compute-common-container-puppet.yaml properties: @@ -387,7 +377,6 @@ outputs: value: service_name: nova_compute monitoring_subscription: {get_param: MonitoringSubscriptionNovaCompute} - global_config_settings: {get_attr: [RabbitMQService, role_data, global_config_settings]} config_settings: map_merge: - get_attr: [NovaLogging, config_settings] @@ -582,15 +571,7 @@ outputs: privileged: true user: nova restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [RabbitMQService, role_data, global_config_settings, 'oslo_messaging_rpc_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/nova/nova-ironic-container-puppet.yaml b/deployment/nova/nova-ironic-container-puppet.yaml index c6aee129d1..05e2e28a87 100644 --- a/deployment/nova/nova-ironic-container-puppet.yaml +++ b/deployment/nova/nova-ironic-container-puppet.yaml @@ -49,16 +49,6 @@ resources: MySQLClient: type: ../../deployment/database/mysql-client.yaml - RabbitMQService: - type: OS::TripleO::Services::OsloMessagingRpc - properties: - ServiceData: {get_param: ServiceData} - ServiceNetMap: {get_param: ServiceNetMap} - DefaultPasswords: {get_param: DefaultPasswords} - EndpointMap: {get_param: EndpointMap} - RoleName: {get_param: RoleName} - RoleParameters: {get_param: RoleParameters} - NovaComputeCommon: type: ./nova-compute-common-container-puppet.yaml properties: @@ -84,7 +74,6 @@ outputs: description: Role data for the Nova Compute service. value: service_name: nova_ironic - global_config_settings: {get_attr: [RabbitMQService, role_data, global_config_settings]} config_settings: map_merge: - get_attr: [NovaBase, role_data, config_settings] @@ -146,15 +135,7 @@ outputs: privileged: true user: root restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [RabbitMQService, role_data, global_config_settings, 'oslo_messaging_rpc_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/nova/nova-scheduler-container-puppet.yaml b/deployment/nova/nova-scheduler-container-puppet.yaml index 96fc73bda9..bee65321b2 100644 --- a/deployment/nova/nova-scheduler-container-puppet.yaml +++ b/deployment/nova/nova-scheduler-container-puppet.yaml @@ -87,16 +87,6 @@ resources: MySQLClient: type: ../../deployment/database/mysql-client.yaml - RabbitMQService: - type: OS::TripleO::Services::OsloMessagingRpc - properties: - ServiceData: {get_param: ServiceData} - ServiceNetMap: {get_param: ServiceNetMap} - DefaultPasswords: {get_param: DefaultPasswords} - EndpointMap: {get_param: EndpointMap} - RoleName: {get_param: RoleName} - RoleParameters: {get_param: RoleParameters} - NovaLogging: type: OS::TripleO::Services::Logging::NovaCommon properties: @@ -120,7 +110,6 @@ outputs: value: service_name: nova_scheduler monitoring_subscription: {get_param: MonitoringSubscriptionNovaScheduler} - global_config_settings: {get_attr: [RabbitMQService, role_data, global_config_settings]} config_settings: map_merge: - {get_attr: [NovaBase, role_data, config_settings]} @@ -173,15 +162,7 @@ outputs: net: host privileged: false restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [RabbitMQService, role_data, global_config_settings, 'oslo_messaging_rpc_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]} diff --git a/deployment/sahara/sahara-engine-container-puppet.yaml b/deployment/sahara/sahara-engine-container-puppet.yaml index bfc83e3708..6a871d51dc 100644 --- a/deployment/sahara/sahara-engine-container-puppet.yaml +++ b/deployment/sahara/sahara-engine-container-puppet.yaml @@ -111,15 +111,7 @@ outputs: net: host privileged: false restart: always - healthcheck: - test: - list_join: - - ' ' - - - '/openstack/healthcheck' - - yaql: - expression: str($.data.port) - data: - port: {get_attr: [SaharaBase, role_data, config_settings, 'sahara::rabbit_port']} + healthcheck: {get_attr: [ContainersCommon, healthcheck_rpc_port]} volumes: list_concat: - {get_attr: [ContainersCommon, volumes]}