Merge "Open ports 443 and 80 on haproxy's firewall when horizon is standalone"
[apex-tripleo-heat-templates.git] / puppet / services / heat-engine.yaml
index 07a20b5..1d5f054 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2016-10-14
+heat_template_version: pike
 
 description: >
   Openstack Heat Engine service configured with Puppet
@@ -13,6 +13,14 @@ parameters:
   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
@@ -48,6 +56,15 @@ parameters:
     default:
       tag: openstack.heat.engine
       path: /var/log/heat/heat-engine.log
+  HeatConvergenceEngine:
+    type: boolean
+    default: true
+    description: Enables the heat engine with the convergence architecture.
+  HeatMaxResourcesPerStack:
+    type: number
+    default: 1000
+    description: Maximum resources allowed per top-level stack. -1 stands for unlimited.
+
 
 resources:
   HeatBase:
@@ -56,6 +73,8 @@ resources:
       ServiceNetMap: {get_param: ServiceNetMap}
       DefaultPasswords: {get_param: DefaultPasswords}
       EndpointMap: {get_param: EndpointMap}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
 
 outputs:
   role_data:
@@ -72,19 +91,36 @@ outputs:
           - heat::engine::num_engine_workers: {get_param: HeatWorkers}
             heat::engine::configure_delegated_roles: false
             heat::engine::trusts_delegated_roles: []
+            heat::engine::max_nested_stack_depth: 6
+            heat::engine::max_resources_per_stack: {get_param: HeatMaxResourcesPerStack}
+            heat::engine::heat_metadata_server_url:
+              make_url:
+                scheme: {get_param: [EndpointMap, HeatCfnPublic, protocol]}
+                host: {get_param: [EndpointMap, HeatCfnPublic, host]}
+                port: {get_param: [EndpointMap, HeatCfnPublic, port]}
+            heat::engine::heat_waitcondition_server_url:
+              make_url:
+                scheme: {get_param: [EndpointMap, HeatCfnPublic, protocol]}
+                host: {get_param: [EndpointMap, HeatCfnPublic, host]}
+                port: {get_param: [EndpointMap, HeatCfnPublic, port]}
+                path: /v1/waitcondition
+            heat::engine::convergence_engine: {get_param: HeatConvergenceEngine}
             tripleo::profile::base::heat::manage_db_purge: {get_param: HeatEnableDBPurge}
             heat::database_connection:
+              make_url:
+                scheme: {get_param: [EndpointMap, MysqlInternal, protocol]}
+                username: heat
+                password: {get_param: HeatPassword}
+                host: {get_param: [EndpointMap, MysqlInternal, host]}
+                path: /heat
+                query:
+                  read_default_file: /etc/my.cnf.d/tripleo.cnf
+                  read_default_group: tripleo
+            heat::keystone_ec2_uri:
               list_join:
-                - ''
-                - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-                  - '://heat:'
-                  - {get_param: HeatPassword}
-                  - '@'
-                  - {get_param: [EndpointMap, MysqlInternal, host]}
-                  - '/heat'
-                  - '?bind_address='
-                  - "%{hiera('tripleo::profile::base::database::mysql::client_bind_address')}"
-            heat::keystone_ec2_uri: {get_param: [EndpointMap, KeystoneEC2, uri]}
+              - ''
+              - - {get_param: [EndpointMap, KeystoneV3Internal, uri]}
+                - '/ec2tokens'
             heat::keystone::domain::domain_password: {get_param: HeatStackDomainAdminPassword}
             heat::engine::auth_encryption_key:
               yaql:
@@ -108,3 +144,17 @@ outputs:
         keystone:
             # This is needed because the keystone profile handles creating the domain
             tripleo::profile::base::keystone::heat_admin_password: {get_param: HeatStackDomainAdminPassword}
+      upgrade_tasks:
+        - name: Check if heat_engine is deployed
+          command: systemctl is-enabled openstack-heat-engine
+          tags: common
+          ignore_errors: True
+          register: heat_engine_enabled
+        - name: "PreUpgrade step0,validation: Check service openstack-heat-engine is running"
+          shell: /usr/bin/systemctl show 'openstack-heat-engine' --property ActiveState | grep '\bactive\b'
+          when: heat_engine_enabled.rc == 0
+          tags: step0,validation
+        - name: Stop heat_engine service
+          tags: step1
+          when: heat_engine_enabled.rc == 0
+          service: name=openstack-heat-engine state=stopped