Move role ResourceGroups inside the jinja2 loop
authorSteven Hardy <shardy@redhat.com>
Mon, 5 Sep 2016 21:57:43 +0000 (22:57 +0100)
committerEmilien Macchi <emilien@redhat.com>
Tue, 13 Sep 2016 19:54:29 +0000 (19:54 +0000)
This moves the now nearly identical group resources inside the loop
there's a FIXME related to some deprecated compute parameters we'll
need to work around.

Change-Id: Iddd63c42754867125e65e7721ab9d9f46f4d6afb
Partially-Implements: blueprint custom-roles

overcloud.j2.yaml
puppet/ceph-storage.yaml
puppet/cinder-storage.yaml
puppet/swift-storage.yaml
roles_data.yaml

index d9dcaee..a7beead 100644 (file)
@@ -99,15 +99,8 @@ parameters:
       the overcloud. It's accessible via the Nova metadata API.
     type: json
 
-  # Controller-specific params
-  ControllerCount:
-    type: number
-    default: 1
-
 # Compute-specific params
-  ComputeCount:
-    type: number
-    default: 1
+# FIXME(shardy) handle these deprecated names as they don't match compute.yaml
   HypervisorNeutronPhysicalBridge:
     default: 'br-ex'
     description: >
@@ -122,7 +115,7 @@ parameters:
 
   # Jinja loop for Role in role_data.yaml
 {% for role in roles %}
-  # Resources generated for {{role.name}} Role
+  # Parameters generated for {{role.name}} Role
   {{role.name}}Services:
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
@@ -131,47 +124,32 @@ parameters:
   {% if role.ServicesDefault %}
     default: {{role.ServicesDefault}}
   {% endif %}
-{% endfor %}
-
-# Block storage specific parameters
-  BlockStorageCount:
-    type: number
-    default: 0
 
-# Object storage specific parameters
-  ObjectStorageCount:
+  {{role.name}}Count:
+    description: Number of {{role.name}} nodes to deploy
     type: number
-    default: 0
-
-# Ceph storage specific parameters
-  CephStorageCount:
-    type: number
-    default: 0
+  {% if role.CountDefault %}
+    default: {{role.CountDefault}}
+  {% endif %}
 
-  # Hostname format for each role
-  # Note %index% is translated into the index of the node, e.g 0/1/2 etc
-  # and %stackname% is replaced with OS::stack_name in the template below.
-  # If you want to use the heat generated names, pass '' (empty string).
-  ControllerHostnameFormat:
-    type: string
-    description: Format for Controller node hostnames
-    default: '%stackname%-controller-%index%'
-  ComputeHostnameFormat:
-    type: string
-    description: Format for Compute node hostnames
-    default: '%stackname%-novacompute-%index%'
-  BlockStorageHostnameFormat:
-    type: string
-    description: Format for BlockStorage node hostnames
-    default: '%stackname%-blockstorage-%index%'
-  ObjectStorageHostnameFormat:
+  {{role.name}}HostnameFormat:
     type: string
-    description: Format for SwiftStorage node hostnames
-    default: '%stackname%-objectstorage-%index%'
-  CephStorageHostnameFormat:
-    type: string
-    description: Format for CephStorage node hostnames
-    default: '%stackname%-cephstorage-%index%'
+    description: >
+      Format for {{role.name}} node hostnames
+      Note %index% is translated into the index of the node, e.g 0/1/2 etc
+      and %stackname% is replaced with the stack name e.g overcloud
+  {% if role.HostnameFormatDefault %}
+    default: "{{role.HostnameFormatDefault}}"
+  {% endif %}
+
+  {{role.name}}RemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from {{role.name}} ResourceGroup when
+      doing an update which requires removal of specific resources.
+      Example format ComputeRemovalPolicies: [{'resource_list': ['0']}]
+{% endfor %}
 
   # Identifiers to trigger tasks on nodes
   UpdateIdentifier:
@@ -187,41 +165,6 @@ parameters:
       Setting this to a unique value will re-run any deployment tasks which
       perform configuration on a Heat stack-update.
 
-  # If you want to remove a specific node from a resource group, you can pass
-  # the node name or id as a <Group>RemovalPolicies parameter, for example:
-  # ComputeRemovalPolicies: [{'resource_list': ['0']}]
-  ControllerRemovalPolicies:
-    default: []
-    type: json
-    description: >
-      List of resources to be removed from ControllerResourceGroup when
-      doing an update which requires removal of specific resources.
-  ComputeRemovalPolicies:
-    default: []
-    type: json
-    description: >
-      List of resources to be removed from ComputeResourceGroup when
-      doing an update which requires removal of specific resources.
-  BlockStorageRemovalPolicies:
-    default: []
-    type: json
-    description: >
-      List of resources to be removed from BlockStorageResourceGroup when
-      doing an update which requires removal of specific resources.
-  ObjectStorageRemovalPolicies:
-    default: []
-    type: json
-    description: >
-      List of resources to be removed from ObjectStorageResourceGroup when
-      doing an update which requires removal of specific resources.
-  CephStorageRemovalPolicies:
-    default: []
-    type: json
-    description: >
-      List of resources to be removed from CephStorageResourceGroup when
-      doing an update which requires removal of specific resources.
-
-
 resources:
 
   HeatAuthEncryptionKey:
@@ -296,158 +239,33 @@ resources:
       ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
       ServiceHostnameList: {get_attr: [{{role.name}}, hostname]}
 
-{% endfor %}
-
-  Controller:
-    type: OS::Heat::ResourceGroup
-    depends_on: Networks
-    properties:
-      count: {get_param: ControllerCount}
-      removal_policies: {get_param: ControllerRemovalPolicies}
-      resource_def:
-        type: OS::TripleO::Controller
-        properties:
-          CloudDomain: {get_param: CloudDomain}
-          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
-          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
-          Hostname:
-            str_replace:
-              template: {get_param: ControllerHostnameFormat}
-              params:
-                '%stackname%': {get_param: 'OS::stack_name'}
-          NodeIndex: '%index%'
-          ServiceConfigSettings:
-            map_merge:
-              - get_attr: [ControllerServiceChain, role_data, config_settings]
-              - get_attr: [ControllerServiceChain, role_data, global_config_settings]
-              - get_attr: [ComputeServiceChain, role_data, global_config_settings]
-              - get_attr: [BlockStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [CephStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [ControllerServiceChain, role_data, global_config_settings]
-          ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
-          MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
-
-  Compute:
+  {{role.name}}:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
     properties:
-      count: {get_param: ComputeCount}
-      removal_policies: {get_param: ComputeRemovalPolicies}
+      count: {get_param: {{role.name}}Count}
+      removal_policies: {get_param: {{role.name}}RemovalPolicies}
       resource_def:
-        type: OS::TripleO::Compute
+        type: OS::TripleO::{{role.name}}
         properties:
           CloudDomain: {get_param: CloudDomain}
-          NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
-          NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
           ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
           EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
           Hostname:
             str_replace:
-              template: {get_param: ComputeHostnameFormat}
-              params:
-                '%stackname%': {get_param: 'OS::stack_name'}
-          NodeIndex: '%index%'
-          ServiceConfigSettings:
-            map_merge:
-              - get_attr: [ComputeServiceChain, role_data, config_settings]
-              - get_attr: [ControllerServiceChain, role_data, global_config_settings]
-              - get_attr: [ComputeServiceChain, role_data, global_config_settings]
-              - get_attr: [BlockStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [CephStorageServiceChain, role_data, global_config_settings]
-          ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
-          MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
-
-  BlockStorage:
-    type: OS::Heat::ResourceGroup
-    depends_on: Networks
-    properties:
-      count: {get_param: BlockStorageCount}
-      removal_policies: {get_param: BlockStorageRemovalPolicies}
-      resource_def:
-        type: OS::TripleO::BlockStorage
-        properties:
-          UpdateIdentifier: {get_param: UpdateIdentifier}
-          Hostname:
-            str_replace:
-              template: {get_param: BlockStorageHostnameFormat}
-              params:
-                '%stackname%': {get_param: 'OS::stack_name'}
-          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
-          CloudDomain: {get_param: CloudDomain}
-          ServerMetadata: {get_param: ServerMetadata}
-          NodeIndex: '%index%'
-          ServiceConfigSettings:
-            map_merge:
-              - get_attr: [BlockStorageServiceChain, role_data, config_settings]
-              - get_attr: [ControllerServiceChain, role_data, global_config_settings]
-              - get_attr: [ComputeServiceChain, role_data, global_config_settings]
-              - get_attr: [BlockStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [CephStorageServiceChain, role_data, global_config_settings]
-          ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
-          MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
-
-  ObjectStorage:
-    type: OS::Heat::ResourceGroup
-    depends_on: Networks
-    properties:
-      count: {get_param: ObjectStorageCount}
-      removal_policies: {get_param: ObjectStorageRemovalPolicies}
-      resource_def:
-        type: OS::TripleO::ObjectStorage
-        properties:
-          UpdateIdentifier: {get_param: UpdateIdentifier}
-          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
-          Hostname:
-            str_replace:
-              template: {get_param: ObjectStorageHostnameFormat}
-              params:
-                '%stackname%': {get_param: 'OS::stack_name'}
-          CloudDomain: {get_param: CloudDomain}
-          ServerMetadata: {get_param: ServerMetadata}
-          NodeIndex: '%index%'
-          ServiceConfigSettings:
-            map_merge:
-              - get_attr: [ObjectStorageServiceChain, role_data, config_settings]
-              - get_attr: [ControllerServiceChain, role_data, global_config_settings]
-              - get_attr: [ComputeServiceChain, role_data, global_config_settings]
-              - get_attr: [BlockStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [CephStorageServiceChain, role_data, global_config_settings]
-          ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
-          MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
-
-  CephStorage:
-    type: OS::Heat::ResourceGroup
-    depends_on: Networks
-    properties:
-      count: {get_param: CephStorageCount}
-      removal_policies: {get_param: CephStorageRemovalPolicies}
-      resource_def:
-        type: OS::TripleO::CephStorage
-        properties:
-          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
-          UpdateIdentifier: {get_param: UpdateIdentifier}
-          Hostname:
-            str_replace:
-              template: {get_param: CephStorageHostnameFormat}
+              template: {get_param: {{role.name}}HostnameFormat}
               params:
                 '%stackname%': {get_param: 'OS::stack_name'}
-          CloudDomain: {get_param: CloudDomain}
-          ServerMetadata: {get_param: ServerMetadata}
           NodeIndex: '%index%'
           ServiceConfigSettings:
             map_merge:
-              - get_attr: [CephStorageServiceChain, role_data, config_settings]
-              - get_attr: [ControllerServiceChain, role_data, global_config_settings]
-              - get_attr: [ComputeServiceChain, role_data, global_config_settings]
-              - get_attr: [BlockStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [ObjectStorageServiceChain, role_data, global_config_settings]
-              - get_attr: [CephStorageServiceChain, role_data, global_config_settings]
-          ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
-          MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
+              -  get_attr: [{{role.name}}ServiceChain, role_data, config_settings]
+          {% for r in roles %}
+              - get_attr: [{{r.name}}ServiceChain, role_data, global_config_settings]
+          {% endfor %}
+          ServiceNames: {get_attr: [{{role.name}}ServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [{{role.name}}ServiceChain, role_data, monitoring_subscriptions]}
+{% endfor %}
 
   allNodesConfig:
     type: OS::TripleO::AllNodes::SoftwareConfig
index 17825aa..62748f9 100644 (file)
@@ -27,6 +27,11 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
   UpdateIdentifier:
     default: ''
     type: string
index 41d5ef8..f5118c2 100644 (file)
@@ -48,6 +48,11 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
   NetworkDeploymentActions:
     type: comma_delimited_list
     description: >
index ff0012f..9eb6631 100644 (file)
@@ -27,6 +27,11 @@ parameters:
     description: Mapping of service_name -> network name. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
   Hostname:
     type: string
     default: '' # Defaults to Heat created hostname
index 6175356..db0004c 100644 (file)
@@ -1,4 +1,6 @@
 - name: Controller
+  CountDefault: 1
+  HostnameFormatDefault: '%stackname%-controller-%index%'
   ServicesDefault:
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CephMon
@@ -69,6 +71,8 @@
     - OS::TripleO::Services::VipHosts
 
 - name: Compute
+  CountDefault: 1
+  HostnameFormatDefault: '%stackname%-novacompute-%index%'
   ServicesDefault:
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CephClient
@@ -92,6 +96,8 @@
     - OS::TripleO::Services::VipHosts
 
 - name: BlockStorage
+  CountDefault: 0
+  HostnameFormatDefault: '%stackname%-blockstorage-%index%'
   ServicesDefault:
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CinderVolume
     - OS::TripleO::Services::VipHosts
 
 - name: ObjectStorage
+  CountDefault: 0
+  HostnameFormatDefault: '%stackname%-objectstorage-%index%'
   ServicesDefault:
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::Kernel
     - OS::TripleO::Services::VipHosts
 
 - name: CephStorage
+  CountDefault: 0
+  HostnameFormatDefault: '%stackname%-cephstorage-%index%'
   ServicesDefault:
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CephOSD