Move containers common volumes from yaql to list_concat
[apex-tripleo-heat-templates.git] / docker / docker-steps.j2
index 301d838..1d5605b 100644 (file)
@@ -1,6 +1,15 @@
 # certain initialization steps (run in a container) will occur
-# on the first role listed in the roles file
-{% set primary_role_name = roles[0].name -%}
+# on the role marked as primary controller or the first role listed
+{%- set primary_role = [roles[0]] -%}
+{%- for role in roles -%}
+  {%- if 'primary' in role.tags and 'controller' in role.tags -%}
+    {%- set _ = primary_role.pop() -%}
+    {%- set _ = primary_role.append(role) -%}
+  {%- endif -%}
+{%- endfor -%}
+{%- set primary_role_name = primary_role[0].name -%}
+# primary role is: {{primary_role_name}}
+{% set deploy_steps_max = 6 -%}
 
 heat_template_version: ocata
 
@@ -38,12 +47,16 @@ resources:
       value:
         yaql:
           expression:
-            dict($.data.docker_puppet_tasks.where($1 != null).selectMany($.items()).groupBy($[0], $[1]))
+            $.data.default_tasks + dict($.data.docker_puppet_tasks.where($1 != null).selectMany($.items()).groupBy($[0], $[1]))
           data:
             docker_puppet_tasks: {get_param: [role_data, {{primary_role_name}}, docker_puppet_tasks]}
+            default_tasks:
+{%- for step in range(1, deploy_steps_max) %}
+              step_{{step}}: {}
+{%- endfor %}
 
 # BEGIN primary_role_name docker-puppet-tasks (run only on a single node)
-{% for step in range(1, 6) %}
+{% for step in range(1, deploy_steps_max) %}
 
   {{primary_role_name}}DockerPuppetJsonConfig{{step}}:
       type: OS::Heat::StructuredConfig
@@ -169,6 +182,8 @@ resources:
     properties:
       group: script
       config: {get_file: docker-puppet.py}
+      inputs:
+        - name: NET_HOST
 
   {{role.name}}GenerateConfigDeployment:
     type: OS::Heat::SoftwareDeploymentGroup
@@ -177,6 +192,8 @@ resources:
       name: {{role.name}}GenerateConfigDeployment
       servers: {get_param: [servers, {{role.name}}]}
       config: {get_resource: {{role.name}}GenerateConfig}
+      input_values:
+        NET_HOST: 'true'
 
   {{role.name}}PuppetStepConfig:
     type: OS::Heat::Value
@@ -239,21 +256,19 @@ resources:
 
   # BEGIN BAREMETAL CONFIG STEPS
 
-  {% if role.name == 'Controller' %}
-  ControllerPrePuppet:
-    type: OS::TripleO::Tasks::ControllerPrePuppet
+  {{role.name}}PreConfig:
+    type: OS::TripleO::Tasks::{{role.name}}PreConfig
     properties:
-      servers: {get_param: [servers, Controller]}
+      servers: {get_param: [servers, {{role.name}}]}
       input_values:
         update_identifier: {get_param: DeployIdentifier}
-  {% endif %}
 
   {{role.name}}Config:
     type: OS::TripleO::{{role.name}}Config
     properties:
       StepConfig: {get_attr: [{{role.name}}PuppetStepConfig, value]}
 
-  {% for step in range(1, 6) %}
+  {% for step in range(1, deploy_steps_max) %}
 
   {{role.name}}Deployment_Step{{step}}:
     type: OS::Heat::StructuredDeploymentGroup
@@ -279,7 +294,7 @@ resources:
   # END BAREMETAL CONFIG STEPS
 
   # BEGIN CONTAINER CONFIG STEPS
-  {% for step in range(1, 6) %}
+  {% for step in range(1, deploy_steps_max) %}
 
   {{role.name}}ContainersConfig_Step{{step}}:
     type: OS::Heat::StructuredConfig
@@ -292,10 +307,12 @@ resources:
     type: OS::Heat::StructuredDeploymentGroup
   {% if step == 1 %}
     depends_on:
-      - {{role.name}}PreConfig
       - {{role.name}}KollaJsonDeployment
       - {{role.name}}GenPuppetDeployment
       - {{role.name}}GenerateConfigDeployment
+        {%- for dep in roles %}
+      - {{dep.name}}Deployment_Step{{step}} # baremetal steps of the same level run first
+        {%- endfor %}
   {% else %}
     depends_on:
         {% for dep in roles %}
@@ -336,15 +353,4 @@ resources:
     properties:
         servers: {get_param: [servers, {{role.name}}]}
 
-  {% if role.name == 'Controller' %}
-  ControllerPostPuppet:
-    depends_on:
-      - ControllerExtraConfigPost
-    type: OS::TripleO::Tasks::ControllerPostPuppet
-    properties:
-      servers: {get_param: [servers, Controller]}
-      input_values:
-        update_identifier: {get_param: DeployIdentifier}
-  {% endif %}
-
 {% endfor %}