diff --git a/ci/environments/scenario003-multinode-containers.yaml b/ci/environments/scenario003-multinode-containers.yaml index 65fa6a654b..8d90dae1b1 100644 --- a/ci/environments/scenario003-multinode-containers.yaml +++ b/ci/environments/scenario003-multinode-containers.yaml @@ -11,6 +11,7 @@ resource_registry: OS::TripleO::Services::MistralApi: ../../docker/services/mistral-api.yaml OS::TripleO::Services::MistralEngine: ../../docker/services/mistral-engine.yaml OS::TripleO::Services::MistralExecutor: ../../docker/services/mistral-executor.yaml + OS::TripleO::Services::MistralEventEngine: ../../docker/services/mistral-event-engine.yaml # Some infra instances don't pass the ping test but are otherwise working. # Since the OVB jobs also test this functionality we can shut it off here. OS::TripleO::AllNodes::Validation: ../common/all-nodes-validation-disabled.yaml @@ -55,6 +56,7 @@ parameter_defaults: - OS::TripleO::Services::MistralApi - OS::TripleO::Services::MistralEngine - OS::TripleO::Services::MistralExecutor + - OS::TripleO::Services::MistralEventEngine - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::Sshd diff --git a/ci/environments/scenario003-multinode.yaml b/ci/environments/scenario003-multinode.yaml index 968a881bbe..5d6bcc8d2a 100644 --- a/ci/environments/scenario003-multinode.yaml +++ b/ci/environments/scenario003-multinode.yaml @@ -5,6 +5,7 @@ resource_registry: OS::TripleO::Services::SaharaEngine: ../../puppet/services/sahara-engine.yaml OS::TripleO::Services::MistralApi: ../../puppet/services/mistral-api.yaml OS::TripleO::Services::MistralEngine: ../../puppet/services/mistral-engine.yaml + OS::TripleO::Services::MistralEventEngine: ../../puppet/services/mistral-event-engine.yaml OS::TripleO::Services::MistralExecutor: ../../puppet/services/mistral-executor.yaml OS::TripleO::Services::RabbitMQ: ../../puppet/services/pacemaker/rabbitmq.yaml OS::TripleO::Services::HAproxy: ../../puppet/services/pacemaker/haproxy.yaml @@ -57,6 +58,7 @@ parameter_defaults: - OS::TripleO::Services::SaharaEngine - OS::TripleO::Services::MistralApi - OS::TripleO::Services::MistralEngine + - OS::TripleO::Services::MistralEventEngine - OS::TripleO::Services::MistralExecutor - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::TripleoFirewall diff --git a/docker/services/mistral-event-engine.yaml b/docker/services/mistral-event-engine.yaml new file mode 100644 index 0000000000..8c0df5ee62 --- /dev/null +++ b/docker/services/mistral-event-engine.yaml @@ -0,0 +1,118 @@ +heat_template_version: pike + +description: > + OpenStack containerized Mistral Event Engine service + +parameters: + DockerMistralEventEngineImage: + description: image + type: string + DockerMistralConfigImage: + description: The container image to use for the mistral config_volume + type: string + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + ServiceData: + default: {} + description: Dictionary packing service data + type: json + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + RoleName: + default: '' + description: Role name on which the service is applied + type: string + RoleParameters: + default: {} + description: Parameters specific to the role + type: json + + +resources: + + ContainersCommon: + type: ./containers-common.yaml + + MySQLClient: + type: ../../puppet/services/database/mysql-client.yaml + + MistralBase: + type: ../../puppet/services/mistral-event-engine.yaml + properties: + EndpointMap: {get_param: EndpointMap} + ServiceData: {get_param: ServiceData} + ServiceNetMap: {get_param: ServiceNetMap} + DefaultPasswords: {get_param: DefaultPasswords} + RoleName: {get_param: RoleName} + RoleParameters: {get_param: RoleParameters} + +outputs: + role_data: + description: Role data for the Mistral Event Engine role. + value: + service_name: {get_attr: [MistralBase, role_data, service_name]} + config_settings: + map_merge: + - get_attr: [MistralBase, role_data, config_settings] + logging_source: {get_attr: [MistralBase, role_data, logging_source]} + logging_groups: {get_attr: [MistralBase, role_data, logging_groups]} + step_config: &step_config + list_join: + - "\n" + - - get_attr: [MistralBase, role_data, step_config] + - get_attr: [MySQLClient, role_data, step_config] + service_config_settings: {get_attr: [MistralBase, role_data, service_config_settings]} + # BEGIN DOCKER SETTINGS + puppet_config: + config_volume: mistral + puppet_tags: mistral_config + step_config: *step_config + config_image: {get_param: DockerMistralConfigImage} + kolla_config: + /var/lib/kolla/config_files/mistral_event_engine.json: + command: /usr/bin/mistral-server --config-file=/etc/mistral/mistral.conf --log-file=/var/log/mistral/event-engine.log --server=event-engine + config_files: + - source: "/var/lib/kolla/config_files/src/*" + dest: "/" + merge: true + preserve_properties: true + permissions: + - path: /var/log/mistral + owner: mistral:mistral + recurse: true + docker_config: + step_4: + mistral_event_engine: + image: {get_param: DockerMistralEventEngineImage} + net: host + privileged: false + restart: always + volumes: + list_concat: + - {get_attr: [ContainersCommon, volumes]} + - + - /run:/run + - /var/lib/kolla/config_files/mistral_event_engine.json:/var/lib/kolla/config_files/config.json:ro + - /var/lib/config-data/puppet-generated/mistral/:/var/lib/kolla/config_files/src:ro + - /var/log/containers/mistral:/var/log/mistral + environment: + - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS + host_prep_tasks: + - name: create persistent logs directory + file: + path: /var/log/containers/mistral + state: directory + upgrade_tasks: + - name: Stop and disable mistral_event_engine service + tags: step2 + service: name=openstack-mistral-event-engine state=stopped enabled=no diff --git a/environments/services-docker/mistral.yaml b/environments/services-docker/mistral.yaml index a215d2a065..2eefbb5327 100644 --- a/environments/services-docker/mistral.yaml +++ b/environments/services-docker/mistral.yaml @@ -2,3 +2,4 @@ resource_registry: OS::TripleO::Services::MistralEngine: ../../docker/services/mistral-engine.yaml OS::TripleO::Services::MistralApi: ../../docker/services/mistral-api.yaml OS::TripleO::Services::MistralExecutor: ../../docker/services/mistral-executor.yaml + OS::TripleO::Services::MistralEventEngine: ../../docker/services/mistral-event-engine.yaml \ No newline at end of file diff --git a/environments/services/mistral.yaml b/environments/services/mistral.yaml index 4e99fa0149..851e667e4b 100644 --- a/environments/services/mistral.yaml +++ b/environments/services/mistral.yaml @@ -2,3 +2,4 @@ resource_registry: OS::TripleO::Services::MistralEngine: ../../puppet/services/mistral-engine.yaml OS::TripleO::Services::MistralApi: ../../puppet/services/mistral-api.yaml OS::TripleO::Services::MistralExecutor: ../../puppet/services/mistral-executor.yaml + OS::TripleO::Services::MistralEventEngine: ../../puppet/services/mistral-event-engine.yaml \ No newline at end of file diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 1a8b052537..649c4e73b8 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -258,6 +258,7 @@ resource_registry: OS::TripleO::Services::MistralEngine: OS::Heat::None OS::TripleO::Services::MistralApi: OS::Heat::None OS::TripleO::Services::MistralExecutor: OS::Heat::None + OS::TripleO::Services::MistralEventEngine: OS::Heat::None OS::TripleO::Services::IronicApi: OS::Heat::None OS::TripleO::Services::IronicConductor: OS::Heat::None OS::TripleO::Services::IronicInspector: OS::Heat::None diff --git a/puppet/services/mistral-event-engine.yaml b/puppet/services/mistral-event-engine.yaml new file mode 100644 index 0000000000..689b034cf1 --- /dev/null +++ b/puppet/services/mistral-event-engine.yaml @@ -0,0 +1,72 @@ +heat_template_version: ocata + +description: > + Openstack Mistral Event Engine service configured with Puppet + +parameters: + ServiceData: + default: {} + description: Dictionary packing service data + type: json + ServiceNetMap: + default: {} + description: Mapping of service_name -> network name. Typically set + via parameter_defaults in the resource registry. This + mapping overrides those in ServiceNetMapDefaults. + type: json + DefaultPasswords: + default: {} + type: json + RoleName: + default: '' + description: Role name on which the service is applied + type: string + RoleParameters: + default: {} + description: Parameters specific to the role + type: json + EndpointMap: + default: {} + description: Mapping of service endpoint -> protocol. Typically set + via parameter_defaults in the resource registry. + type: json + +resources: + MistralBase: + type: ./mistral-base.yaml + 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 Mistral Event Engine role. + value: + service_name: mistral_event_engine + config_settings: + get_attr: [MistralBase, role_data, config_settings] + step_config: | + include ::tripleo::profile::base::mistral::event_engine + upgrade_tasks: + - name: Check if mistral event engine is deployed + command: systemctl is-enabled openstack-mistral-event-engine + tags: common + ignore_errors: True + register: mistral_event_engine_enabled + - name: "PreUpgrade step0,validation: Check if openstack-mistral-event-engine is running" + shell: > + /usr/bin/systemctl show 'openstack-mistral-event-engine' --property ActiveState | + grep '\bactive\b' + when: mistral_event_engine_enabled.rc == 0 + tags: step0,validation + - name: Stop mistral_event_engine service + tags: step1 + service: name=openstack-mistral-event-engine state=stopped + - name: Install openstack-mistral-event-engine package if it was disabled + tags: step3 + yum: name=openstack-mistral-event-engine state=latest + when: mistral_event_engine_enabled.rc != 0 diff --git a/releasenotes/notes/add-mistral-event-engine-3a33700c20c88e86.yaml b/releasenotes/notes/add-mistral-event-engine-3a33700c20c88e86.yaml new file mode 100644 index 0000000000..29768c051d --- /dev/null +++ b/releasenotes/notes/add-mistral-event-engine-3a33700c20c88e86.yaml @@ -0,0 +1,4 @@ +--- +features: + - Add support for Mistral event engine. + diff --git a/roles/Undercloud.yaml b/roles/Undercloud.yaml index a78ba3984d..dc352557aa 100644 --- a/roles/Undercloud.yaml +++ b/roles/Undercloud.yaml @@ -26,6 +26,7 @@ - OS::TripleO::Services::MistralApi - OS::TripleO::Services::MistralEngine - OS::TripleO::Services::MistralExecutor + - OS::TripleO::Services::MistralEventEngine - OS::TripleO::Services::MySQL - OS::TripleO::Services::NeutronApi - OS::TripleO::Services::NeutronCorePlugin diff --git a/roles_data_undercloud.yaml b/roles_data_undercloud.yaml index 4628665b1f..074cbbb746 100644 --- a/roles_data_undercloud.yaml +++ b/roles_data_undercloud.yaml @@ -29,6 +29,7 @@ - OS::TripleO::Services::MistralApi - OS::TripleO::Services::MistralEngine - OS::TripleO::Services::MistralExecutor + - OS::TripleO::Services::MistralEventEngine - OS::TripleO::Services::MySQL - OS::TripleO::Services::NeutronApi - OS::TripleO::Services::NeutronCorePlugin