Merge "Make Swift replica count configurable."
authorJenkins <jenkins@review.openstack.org>
Tue, 26 Aug 2014 11:35:34 +0000 (11:35 +0000)
committerGerrit Code Review <review@openstack.org>
Tue, 26 Aug 2014 11:35:34 +0000 (11:35 +0000)
21 files changed:
Makefile
base.yaml
block-storage-nfs.yaml
block-storage.yaml
controller.yaml
examples/scale_map_result_hot_blacklist.yaml [new file with mode: 0644]
examples/source_hot.yaml
nagios3.yaml
nfs-server-source.yaml
nova-compute-config.yaml
nova-compute-instance.yaml
overcloud-source.yaml
setup.cfg
swift-deploy.yaml
swift-storage-source.yaml
test_merge.bash
tripleo_heat_merge/merge.py
undercloud-bm-nova-deploy.yaml
undercloud-source.yaml
undercloud-vm-ironic-deploy.yaml
undercloud-vm-nova-deploy.yaml

index 295e85c..ad8dc99 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,13 +15,13 @@ $(VALIDATE):
        heat template-validate -f $(subst validate-,,$@)
 
 overcloud.yaml: overcloud-source.yaml block-storage.yaml swift-deploy.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml nova-compute-config.yaml $(overcloud_source_deps)
-       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE='0'} --scale BlockStorage=$${BLOCKSTORAGESCALE='0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml > $@.tmp
+       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'0'} overcloud-source.yaml block-storage.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml swift-deploy.yaml nova-compute-config.yaml > $@.tmp
        mv $@.tmp $@
 
 overcloud-with-block-storage-nfs.yaml: overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml $(overcloud_source_deps)
        # $^ won't work here because we want to list nova-compute-instance.yaml as
        # a prerequisite but don't want to pass it into merge.py
-       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE='0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'1'} overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml > $@.tmp
+       python ./tripleo_heat_merge/merge.py --hot --scale NovaCompute=$${COMPUTESCALE:-'1'} --scale controller=$${CONTROLSCALE:-'1'} --scale SwiftStorage=$${SWIFTSTORAGESCALE:-'0'} --scale BlockStorage=$${BLOCKSTORAGESCALE:-'1'} overcloud-source.yaml block-storage-nfs.yaml nfs-server-source.yaml swift-source.yaml swift-storage-source.yaml ssl-source.yaml > $@.tmp
        mv $@.tmp $@
 
 undercloud-vm.yaml: undercloud-source.yaml undercloud-vm-nova-config.yaml undercloud-vm-nova-deploy.yaml
index 43ce7e6..9c2e4e2 100644 (file)
--- a/base.yaml
+++ b/base.yaml
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 description: 'Tie OpenStack components together'
 parameters:
   TemplateRoot:
@@ -12,7 +12,7 @@ resources:
   RabbitMQ:
     type: AWS::CloudFormation::Stack
     TemplateURL:
-      list_join:
+      Fn::Join:
         - {get_param: TemplateRoot}
         - rabbitmq.yaml
     parameters:
@@ -22,7 +22,7 @@ resources:
   MySQL:
     type: AWS::CloudFormation::Stack
     TemplateURL:
-      list_join:
+      Fn::Join:
         - {get_param: TemplateRoot}
         - mysql.yaml
     parameters:
@@ -32,14 +32,14 @@ resources:
   Keystone:
     type: AWS::CloudFormation::Stack
     TemplateURL:
-      list_join:
+      Fn::Join:
         - {get_param: TemplateRoot}
         - keystone.yaml
     parameters:
       AdminToken: {get_param: KeystoneAdminToken}
       KeyName: default
       KeystoneDSN:
-        list_join:
+        Fn::Join:
           - 'mysql://keystone:'
           - {get_attr: [ MySQL , KeystonePassword ]}
           - '@'
@@ -48,13 +48,13 @@ resources:
   Glance:
     type: AWS::CloudFormation::Stack
     TemplateURL:
-      list_join:
+      Fn::Join:
         - {get_param: TemplateRoot}
         - glance.yaml
     parameters:
       KeyName: default
       HeatDSN:
-        list_join:
+        Fn::Join:
           - 'mysql://glance:'
           - {get_attr: [ MySQL, GlancePassword ] }
           - '@'
@@ -63,13 +63,13 @@ resources:
   Heat:
     type: AWS::CloudFormation::Stack
     TemplateURL:
-      list_join:
+      Fn::Join:
         - {get_param: TemplateRoot}
         - heat.yaml
     parameters:
       KeyName: default
       HeatDSN:
-        list_join:
+        Fn::Join:
           - 'mysql://heat:'
           - {get_attr: [ MySQL, HeatPassword ] }
           - '@'
index 8346c1f..4947316 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 description: 'Common Block Storage Configuration'
 parameters:
   BlockStorageImage:
@@ -52,13 +52,13 @@ resources:
       keystone:
         host: {get_attr: [controller0, networks, ctlplane, 0]}
       cinder:
-        db: {list_join: ['', ['mysql://cinder:unset@', {get_attr: [controller0, networks, ctlplane, 0]} , '/cinder']]}
+        db: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]}
         volume_size_mb: '5000'
         service-password:
           get_param: CinderPassword
         include_nfs_backend: 'true'
         nfs_shares:
-          - {list_join: ['', [{get_attr: [controller0, networks, ctlplane, 0]} , ':/mnt/state/var/lib/nfs_share']]}
+          - {"Fn::Join": ['', [{get_attr: [controller0, networks, ctlplane, 0]} , ':/mnt/state/var/lib/nfs_share']]}
       admin-password: {get_param: AdminPassword}
       rabbit:
         host: {get_attr: [controller0, networks, ctlplane, 0]}
index 761de52..e75e773 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 description: 'Common Block Storage Configuration'
 parameters:
   BlockStorageImage:
@@ -8,12 +8,6 @@ parameters:
     default: baremetal
     description: Flavor for block storage nodes to request when deploying.
     type: string
-  NeutronNetworkType:
-    type: string
-    default: 'gre'
-  NeutronEnableTunnelling:
-    type: string
-    default: True
 resources:
   BlockStorage0:
     type: OS::Nova::Server
@@ -24,14 +18,14 @@ resources:
       key_name: {get_param: KeyName}
       user_data_format: SOFTWARE_CONFIG
   BlockStorage0Deployment:
+    depends_on: [controller0AllNodesDeployment]
     type: OS::Heat::StructuredDeployment
     properties:
       server: {get_resource: BlockStorage0}
       config: {get_resource: BlockStorageConfig}
       input_values:
-        controller_host: {get_attr: [controller0, networks, ctlplane, 0]}
-        cinder_dsn: {list_join: ['', ['mysql://cinder:unset@', {get_attr: [controller0, networks, ctlplane, 0]} , '/cinder']]}
-        neutron_local_ip: {get_attr: [BlockStorage0 , networks, ctlplane, 0]}
+        controller_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+        cinder_dsn: {"Fn::Join": ['', ['mysql://cinder:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} , '/cinder']]}
       signal_transport: NO_SIGNAL
   BlockStorageConfig:
     type: OS::Heat::StructuredConfig
@@ -40,7 +34,7 @@ resources:
       config:
         admin-password: {get_param: AdminPassword}
         keystone:
-          host: {get_input: controller_host}
+          host: {get_input: controller_virtual_ip}
         cinder:
           db: {get_input: cinder_dsn}
           volume_size_mb:
@@ -50,15 +44,9 @@ resources:
           iscsi-helper:
             get_param: CinderISCSIHelper
         rabbit:
-          host: {get_input: controller_host}
+          host: {get_input: controller_virtual_ip}
           username: {get_param: RabbitUserName}
           password: {get_param: RabbitPassword}
-        interfaces:
-          control: {get_param: NeutronPublicInterface}
-        neutron:
-          ovs:
-            local_ip: {get_input: neutron_local_ip}
-            tenant_network_type: {get_param: NeutronNetworkType}
-            enable_tunneling: {get_param: NeutronEnableTunnelling}
-          service-password:
-            get_param: NeutronPassword
+        glance:
+          host: {get_input: controller_virtual_ip}
+          port: {get_param: GlancePort}
index 1b0cb54..8aac819 100644 (file)
@@ -1,6 +1,6 @@
 description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
   server,Dedicated RabbitMQ Server
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 parameters:
   AdminToken:
     type: string
@@ -130,7 +130,7 @@ resources:
             password: {get_param: NeutronDBPassword}
       glance:
         db:
-          list_join:
+          Fn::Join:
             - ''
             - - 'mysql://glance:'
               - {get_param: GlanceDBPassword}
@@ -141,7 +141,7 @@ resources:
             get_param: GlanceLogFile
       heat:
         db:
-          list_join:
+          Fn::Join:
             - ''
             - - 'mysql://heat:'
               - {get_param: HeatDBPassword}
@@ -168,14 +168,14 @@ resources:
         host:
           '127.0.0.1'
         db:
-          list_join:
+          Fn::Join:
             - ''
             - - 'mysql://keystone:'
               - {get_param: KeystoneDBPassword}
               - '@127.0.0.1/keystone'
       nova:
         db:
-          list_join:
+          Fn::Join:
             - ''
             - - 'mysql://nova:'
               - {get_param: NovaDBPassword}
@@ -184,7 +184,7 @@ resources:
         host:
           '127.0.0.1'
         ovs_db:
-          list_join:
+          Fn::Join:
             - ''
             - - 'mysql://neutron:'
               - {get_param: NeutronDBPassword}
diff --git a/examples/scale_map_result_hot_blacklist.yaml b/examples/scale_map_result_hot_blacklist.yaml
new file mode 100644 (file)
index 0000000..decb0d5
--- /dev/null
@@ -0,0 +1,367 @@
+description: examples/scale_map_hot.yaml
+heat_template_version: '2013-05-23'
+resources:
+  ComputeUser:
+    properties:
+      Policies:
+      - get_param: ComputeAccessPolicy
+    type: AWS::IAM::User
+  GlobalAccessPolicy:
+    type: OS::Heat::AccessPolicy
+  NovaCompute0:
+    metadata:
+      os-collect-config:
+        cfn:
+          access_key_id:
+            get_resource: NovaCompute0Key
+          path: NovaCompute0Config.Metadata
+          secret_access_key:
+            get_attr:
+            - NovaCompute0Key
+            - SecretAccessKey
+          stack_name:
+            get_param: AWS::StackName
+    properties:
+      image:
+        get_param: ComputeImage
+    type: OS::Nova::Server
+  NovaCompute0CompletionCondition:
+    depends_on: notcompute
+    properties:
+      Count: '1'
+      Handle:
+        get_resource: NovaCompute0CompletionHandle
+      Timeout: '1800'
+    type: AWS::CloudFormation::WaitCondition
+  NovaCompute0CompletionHandle:
+    type: AWS::CloudFormation::WaitConditionHandle
+  NovaCompute0Config:
+    metadata:
+      completion-handle:
+        get_resource: NovaCompute0CompletionHandle
+      hosts:
+        list_join:
+        - '
+
+          '
+        - - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute0
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute0
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute0
+                      - show
+                  - local
+          - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute3
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute3
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute3
+                      - show
+                  - local
+          - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute4
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute4
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute4
+                      - show
+                  - local
+      os-collect-config:
+        cfn:
+          access_key_id:
+            get_resource: NovaCompute0Key
+          path: NovaCompute0Config.Metadata
+          secret_access_key:
+            get_attr:
+            - NovaCompute0Key
+            - SecretAccessKey
+          stack_name:
+            get_param: AWS::StackName
+    type: AWS::AutoScaling::LaunchConfiguration
+  NovaCompute0Key:
+    properties:
+      UserName:
+        get_param: ComputeUser
+    type: AWS::IAM::AccessKey
+  NovaCompute3:
+    metadata:
+      os-collect-config:
+        cfn:
+          access_key_id:
+            get_resource: NovaCompute3Key
+          path: NovaCompute3Config.Metadata
+          secret_access_key:
+            get_attr:
+            - NovaCompute3Key
+            - SecretAccessKey
+          stack_name:
+            get_param: AWS::StackName
+    properties:
+      image:
+        get_param: ComputeImage
+    type: OS::Nova::Server
+  NovaCompute3CompletionCondition:
+    depends_on: notcompute
+    properties:
+      Count: '1'
+      Handle:
+        get_resource: NovaCompute3CompletionHandle
+      Timeout: '1800'
+    type: AWS::CloudFormation::WaitCondition
+  NovaCompute3CompletionHandle:
+    type: AWS::CloudFormation::WaitConditionHandle
+  NovaCompute3Config:
+    metadata:
+      completion-handle:
+        get_resource: NovaCompute3CompletionHandle
+      hosts:
+        list_join:
+        - '
+
+          '
+        - - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute0
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute0
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute0
+                      - show
+                  - local
+          - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute3
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute3
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute3
+                      - show
+                  - local
+          - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute4
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute4
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute4
+                      - show
+                  - local
+      os-collect-config:
+        cfn:
+          access_key_id:
+            get_resource: NovaCompute3Key
+          path: NovaCompute3Config.Metadata
+          secret_access_key:
+            get_attr:
+            - NovaCompute3Key
+            - SecretAccessKey
+          stack_name:
+            get_param: AWS::StackName
+    type: AWS::AutoScaling::LaunchConfiguration
+  NovaCompute3Key:
+    properties:
+      UserName:
+        get_param: ComputeUser
+    type: AWS::IAM::AccessKey
+  NovaCompute4:
+    metadata:
+      os-collect-config:
+        cfn:
+          access_key_id:
+            get_resource: NovaCompute4Key
+          path: NovaCompute4Config.Metadata
+          secret_access_key:
+            get_attr:
+            - NovaCompute4Key
+            - SecretAccessKey
+          stack_name:
+            get_param: AWS::StackName
+    properties:
+      image:
+        get_param: ComputeImage
+    type: OS::Nova::Server
+  NovaCompute4CompletionCondition:
+    depends_on: notcompute
+    properties:
+      Count: '1'
+      Handle:
+        get_resource: NovaCompute4CompletionHandle
+      Timeout: '1800'
+    type: AWS::CloudFormation::WaitCondition
+  NovaCompute4CompletionHandle:
+    type: AWS::CloudFormation::WaitConditionHandle
+  NovaCompute4Config:
+    metadata:
+      completion-handle:
+        get_resource: NovaCompute4CompletionHandle
+      hosts:
+        list_join:
+        - '
+
+          '
+        - - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute0
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute0
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute0
+                      - show
+                  - local
+          - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute3
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute3
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute3
+                      - show
+                  - local
+          - list_join:
+            - ' '
+            - - Fn::Select:
+                - 0
+                - Fn::Select:
+                  - ctlplane
+                  - get_attr:
+                    - NovaCompute4
+                    - networks
+              - Fn::Select:
+                - name
+                - get_attr:
+                  - NovaCompute4
+                  - show
+              - list_join:
+                - .
+                - - Fn::Select:
+                    - name
+                    - get_attr:
+                      - NovaCompute4
+                      - show
+                  - local
+      os-collect-config:
+        cfn:
+          access_key_id:
+            get_resource: NovaCompute4Key
+          path: NovaCompute4Config.Metadata
+          secret_access_key:
+            get_attr:
+            - NovaCompute4Key
+            - SecretAccessKey
+          stack_name:
+            get_param: AWS::StackName
+    type: AWS::AutoScaling::LaunchConfiguration
+  NovaCompute4Key:
+    properties:
+      UserName:
+        get_param: ComputeUser
+    type: AWS::IAM::AccessKey
index 7b47f2b..1531488 100644 (file)
@@ -13,4 +13,4 @@ resources:
     Path: examples/lib_hot.yaml
     SubKey: resources.GenericB
     parameters:
-      ImportantValue: {list_join: [ '', ['one', 'two', 'three']]}
+      ImportantValue: {"Fn::Join": [ '', ['one', 'two', 'three']]}
index 06cbb6a..1e0a461 100644 (file)
@@ -12,7 +12,7 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 #
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 description: Deploy Nagios
 parameters:
   adm_web_passwd:
index 63a1502..8e32e96 100644 (file)
@@ -7,7 +7,7 @@ resources:
         shares:
           Merge::Map:
             NovaCompute0:
-              list_join:
+              Fn::Join:
               - ' '
               - - get_attr:
                   - NovaCompute0
@@ -15,7 +15,7 @@ resources:
                   - ctlplane
                   - 0
             BlockStorage0:
-              list_join:
+              Fn::Join:
               - ' '
               - - get_attr:
                   - BlockStorage0
index cb428ea..90387d7 100644 (file)
@@ -9,6 +9,7 @@ resources:
           compute_libvirt_type: { get_input: nova_compute_libvirt_type }
           db: {get_input: nova_dsn}
           host: {get_input: nova_api_host}
+          public_ip: {get_input: nova_public_ip}
           service-password: {get_input: nova_password}
         ceilometer:
           db: {get_input: ceilometer_dsn}
index 562d0ad..f8b5ebe 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 description: 'Nova Compute'
 parameters:
   AdminPassword:
@@ -136,6 +136,8 @@ parameters:
     type: string
   NovaDSN:
     type: string
+  NovaPublicIP:
+    type: string
   NeutronDSN:
     type: string
   NeutronBridgeMappings:
@@ -170,6 +172,12 @@ parameters:
     type: string
     description: The image ID for live-updates to the overcloud compute nodes.
     default: ''
+  DefaultSignalTransport:
+    default: CFN_SIGNAL
+    description: Transport to use for software-config signals.
+    type: string
+    constraints:
+      - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
 resources:
   NovaCompute0:
     type: OS::Nova::Server
@@ -183,8 +191,8 @@ resources:
       networks:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
-  NovaCompute0Deploy:
-    depends_on: [controller0AllNodes]
+  NovaCompute0Deployment:
+    depends_on: [controller0AllNodesDeployment]
     type: OS::Heat::StructuredDeployment
     properties:
       signal_transport: NO_SIGNAL
@@ -194,6 +202,7 @@ resources:
         nova_compute_driver: {get_param: NovaComputeDriver}
         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
         nova_dsn: {get_param: NovaDSN}
+        nova_public_ip: {get_param: NovaPublicIP}
         nova_api_host: {get_param: NovaApiHost}
         nova_password: {get_param: NovaPassword}
         ceilometer_dsn: {get_param: CeilometerDSN}
@@ -228,14 +237,15 @@ resources:
         nova_image: {get_param: NovaImage}
         live_update_image_id: {get_param: LiveUpdateComputeImage}
         ntp_server: {get_param: NtpServer}
-  NovaCompute0AllNodesDeploy:
+  NovaCompute0AllNodesDeployment:
     depends_on: [NovaCompute0Passthrough]
     type: OS::Heat::StructuredDeployment
     properties:
+      signal_transport: {get_param: DefaultSignalTransport}
       config: {get_param: AllNodesConfig}
       server: {get_resource: NovaCompute0}
   NovaCompute0Passthrough:
-    depends_on: [NovaCompute0Deploy]
+    depends_on: [NovaCompute0Deployment]
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: NovaComputePassthrough}
index 6449f8d..63ebb20 100644 (file)
@@ -1,6 +1,6 @@
 description: Nova API,Keystone,Heat Engine and API,Glance,Neutron,Dedicated MySQL
   server,Dedicated RabbitMQ Server,Group of Nova Computes
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 parameters:
   AdminPassword:
     default: unset
@@ -106,9 +106,22 @@ parameters:
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
   NeutronBridgeMappings:
-    description: The OVS logical->physical bridge mappings to use.
+    description: |
+      The OVS logical->physical bridge mappings to use. See the Neutron
+      documentation for details. Defaults to mapping br-ex - the external
+      bridge on hosts - to a physical name 'datacentre' which can be used
+      to create provider networks (and we use this for the default floating
+      network) - if changing this either use different post-install network
+      scripts or be sure to keep 'datacentre' as a mapping network name.
+    type: string
+    default: "datacentre:br-ex"
+  NeutronNetworkVLANRanges:
+    default: 'datacentre'
+    description: |
+      The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
+      Neutron documentation for permitted values. Defaults to permitting any
+      VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
     type: string
-    default: ''
   NeutronPassword:
     default: unset
     description: The password for the neutron service account, used by neutron agents.
@@ -159,14 +172,19 @@ parameters:
     hidden: true
   NeutronFlatNetworks:
     type: string
-    default: ''
-    description: If set, flat networks to configure in neutron plugins.
+    default: 'datacentre'
+    description: |
+      If set, flat networks to configure in neutron plugins. Defaults to
+      'datacentre' to permit external network creation.
   HypervisorNeutronPhysicalBridge:
-    default: ''
-    description: An OVS bridge to create on each hypervisor.
+    default: 'br-ex'
+    description: |
+      An OVS bridge to create on each hypervisor. This defaults to br-ex the
+      same as the control plane nodes, as we have a uniform configuration of
+      the openvswitch agent. Typically should not need to be changed.
     type: string
   HypervisorNeutronPublicInterface:
-    default: ''
+    default: 'eth0'
     description: What interface to add to the HypervisorNeutronPhysicalBridge.
     type: string
   NeutronPublicInterface:
@@ -283,6 +301,12 @@ parameters:
     description: Keystone key for signing tokens.
     type: string
     hidden: true
+  DefaultSignalTransport:
+    default: CFN_SIGNAL
+    description: Transport to use for software-config signals.
+    type: string
+    constraints:
+      - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
 resources:
   ControlVirtualIP:
     type: OS::Neutron::Port
@@ -295,6 +319,10 @@ resources:
     type: OS::Heat::RandomString
     properties:
       length: 10
+  MysqlRootPassword:
+    type: OS::Heat::RandomString
+    properties:
+      length: 10
   PublicVirtualIP:
     type: OS::Neutron::Port
     properties:
@@ -308,34 +336,53 @@ resources:
       length: 20
       salt:
         get_param: RabbitCookieSalt
-  NovaCompute0Deploy:
+  NovaCompute0Deployment:
     type: FileInclude
     Path: nova-compute-instance.yaml
-    SubKey: resources.NovaCompute0Deploy
+    SubKey: resources.NovaCompute0Deployment
     parameters:
+        DefaultSignalTransport:
+            get_param: DefaultSignalTransport
         NovaApiHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
         KeystoneHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
         NeutronHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
         GlanceHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
         RabbitHost: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-        NovaDSN: {list_join: ['', ['mysql://nova:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}, '/nova']]}
-        CeilometerDSN: {list_join: ['', ['mysql://ceilometer:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}, '/ceilometer']]}
-        NeutronDSN: {list_join: ['', ['mysql://neutron:unset@', {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}, '/ovs_neutron']]}
+        NovaDSN:
+          Fn::Join:
+            - ''
+            - - mysql://nova:unset@
+              - &compute_database_host {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+              - /nova
+        NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+        CeilometerDSN:
+          Fn::Join:
+            - ''
+            - - mysql://ceilometer:unset@
+              - *compute_database_host
+              - /ceilometer
+        NeutronDSN:
+          Fn::Join:
+            - ''
+            - - mysql://neutron:unset@
+              - *compute_database_host
+              - /ovs_neutron
         NeutronNetworkType: "gre"
         NeutronEnableTunnelling: "True"
         NeutronFlatNetworks:
             get_param: NeutronFlatNetworks
-        NeutronNetworkVLANRanges: ""
+        NeutronNetworkVLANRanges:
+            get_param: NeutronNetworkVLANRanges
         NeutronPhysicalBridge:
             get_param: HypervisorNeutronPhysicalBridge
         NeutronPublicInterface:
             get_param: HypervisorNeutronPublicInterface
         NeutronBridgeMappings:
             get_param: NeutronBridgeMappings
-  NovaCompute0AllNodes:
+  NovaCompute0AllNodesDeployment:
     type: FileInclude
     Path: nova-compute-instance.yaml
-    SubKey: resources.NovaCompute0AllNodesDeploy
+    SubKey: resources.NovaCompute0AllNodesDeployment
     parameters:
         AllNodesConfig: {get_resource: allNodesConfig}
   NovaCompute0Passthrough:
@@ -374,8 +421,16 @@ resources:
                       - controller0
                       - show
           nodeid: {get_input: bootstack_nodeid}
+        database:
+          host: &database_host
+            {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
         cinder:
-          db: mysql://cinder:unset@localhost/cinder
+          db:
+            Fn::Join:
+              - ''
+              - - mysql://cinder:unset@
+                - *database_host
+                - /cinder
           volume_size_mb:
             get_param: CinderLVMLoopDeviceSize
           service-password:
@@ -400,7 +455,12 @@ resources:
           registry:
             host: {get_input: controller_virtual_ip}
           backend: swift
-          db: mysql://glance:unset@localhost/glance
+          db:
+            Fn::Join:
+              - ''
+              - - mysql://glance:unset@
+                - *database_host
+                - /glance
           host:
             get_input: controller_virtual_ip
           port:
@@ -422,7 +482,12 @@ resources:
           admin_tenant_name: service
           admin_user: heat
           auth_encryption_key: unset___________
-          db: mysql://heat:unset@localhost/heat
+          db:
+            Fn::Join:
+              - ''
+              - - mysql://heat:unset@
+                - *database_host
+                - /heat
           stack_domain_admin_password: {get_param: HeatStackDomainAdminPassword}
           watch_server_url: {get_input: heat.watch_server_url}
           metadata_server_url: {get_input: heat.metadata_server_url}
@@ -435,7 +500,12 @@ resources:
                   controller0:
                     {get_attr: [controller0, show, name]}
         keystone:
-          db: mysql://keystone:unset@localhost/keystone
+          db:
+            Fn::Join:
+              - ''
+              - - mysql://keystone:unset@
+                - *database_host
+                - /keystone
           host:
             get_input: controller_virtual_ip
           ca_certificate: {get_param: KeystoneCACertificate}
@@ -443,12 +513,14 @@ resources:
           signing_certificate: {get_param: KeystoneSigningCertificate}
         mysql:
           innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
+          local_bind: true
+          root-password: {get_resource: MysqlRootPassword}
           nodes:
             Merge::Map:
               controller0:
                 ip: {get_attr: [controller0, networks, ctlplane, 0]}
           cluster_name:
-            list_join:
+            Fn::Join:
               - '-'
               - - 'tripleo'
                 - {get_resource: MysqlClusterUniquePart}
@@ -460,6 +532,7 @@ resources:
             enable_tunneling: 'True'
             local_ip:
               get_input: controller_host
+            network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
             bridge_mappings: {get_param: NeutronBridgeMappings}
             public_interface:
               get_param: NeutronPublicInterface
@@ -469,13 +542,23 @@ resources:
               get_param: NeutronPublicInterfaceDefaultRoute
             physical_bridge: br-ex
             tenant_network_type: gre
-          ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
+          ovs_db:
+            Fn::Join:
+              - ''
+              - - mysql://neutron:unset@
+                - *database_host
+                - /ovs_neutron?charset=utf8
           service-password:
             get_param: NeutronPassword
           dnsmasq-options:
             get_param: NeutronDnsmasqOptions
         ceilometer:
-          db: mysql://ceilometer:unset@localhost/ceilometer
+          db:
+            Fn::Join:
+              - ''
+              - - mysql://ceilometer:unset@
+                - *database_host
+                - /ceilometer
           metering_secret: {get_param: CeilometerMeteringSecret}
           service-password:
             get_param: CeilometerPassword
@@ -487,7 +570,12 @@ resources:
             get_param: SnmpdReadonlyUserPassword
         nova:
           compute_driver: libvirt.LibvirtDriver
-          db: mysql://nova:unset@localhost/nova
+          db:
+            Fn::Join:
+              - ''
+              - - mysql://nova:unset@
+                - *database_host
+                - /nova
           default_floating_pool:
             ext-net
           host: {get_input: controller_virtual_ip}
@@ -586,6 +674,13 @@ resources:
             - name: heat_cfn
               port: 8000
               net_binds: *public_binds
+            - name: mysql
+              port: 3306
+              extra_server_params:
+                - backup
+              options:
+                - timeout client 0
+                - timeout server 0
             - name: nova_ec2
               port: 8773
             - name: nova_osapi
@@ -624,10 +719,11 @@ resources:
       networks:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
-  controller0AllNodes:
+  controller0AllNodesDeployment:
     depends_on: [controller0Deployment,controller0SSLDeployment,controller0Swift,controller0Passthrough]
     type: OS::Heat::StructuredDeployment
     properties:
+      signal_transport: {get_param: DefaultSignalTransport}
       config: {get_resource: allNodesConfig}
       server: {get_resource: controller0}
   controller0Deployment:
@@ -642,19 +738,19 @@ resources:
         controller_virtual_ip:
           {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
         heat.watch_server_url:
-          list_join:
+          Fn::Join:
             - ''
             - - 'http://'
               - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
               - ':8003'
         heat.metadata_server_url:
-          list_join:
+          Fn::Join:
             - ''
             - - 'http://'
               - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
               - ':8000'
         heat.waitcondition_server_url:
-          list_join:
+          Fn::Join:
             - ''
             - - 'http://'
               - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
@@ -665,36 +761,60 @@ resources:
       config:
         completion-signal: {get_input: deploy_signal_id}
         hosts:
-          list_join:
+          Fn::Join:
           - "\n"
-          - - list_join:
+          - - Fn::Join:
               - "\n"
               - Merge::Map:
                   NovaCompute0:
-                    list_join:
+                    Fn::Join:
                     - ' '
                     - - {get_attr: [NovaCompute0, networks, ctlplane, 0]}
                       - {get_attr: [NovaCompute0, show, name]}
-                      - list_join:
+                      - Fn::Join:
                         - '.'
                         - - {get_attr: [NovaCompute0, show, name]}
                           - 'novalocal'
-            - list_join:
+            - Fn::Join:
+              - "\n"
+              - Merge::Map:
+                  BlockStorage0:
+                    Fn::Join:
+                    - ' '
+                    - - {get_attr: [BlockStorage0, networks, ctlplane, 0]}
+                      - {get_attr: [BlockStorage0, show, name]}
+                      - Fn::Join:
+                        - '.'
+                        - - {get_attr: [BlockStorage0, show, name]}
+                          - 'novalocal'
+            - Fn::Join:
+              - "\n"
+              - Merge::Map:
+                  SwiftStorage0:
+                    Fn::Join:
+                    - ' '
+                    - - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
+                      - {get_attr: [SwiftStorage0, show, name]}
+                      - Fn::Join:
+                        - '.'
+                        - - {get_attr: [SwiftStorage0, show, name]}
+                          - 'novalocal'
+            - Fn::Join:
               - "\n"
               - Merge::Map:
                   controller0:
-                    list_join:
+                    Fn::Join:
                     - ' '
                     - - {get_attr: [controller0, networks, ctlplane, 0]}
                       - {get_attr: [controller0, show, name]}
-                      - list_join:
+                      - Fn::Join:
                         - '.'
                         - - {get_attr: [controller0, show, name]}
                           - 'novalocal'
                       - {get_param: CloudName}
         rabbit:
           nodes:
-            list_join:
+            Fn::Join:
               - ','
               - Merge::Map:
                   controller0:
@@ -722,7 +842,7 @@ outputs:
   KeystoneURL:
     description: URL for the Overcloud Keystone service
     value:
-      list_join:
+      Fn::Join:
       - ''
       - - http://
         - {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
index 28adf7c..f765a7d 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,5 @@
 [metadata]
 name = tripleo-heat-templates
-version = 0.0.1
 summary = Heat templates for deploying OpenStack with OpenStack.
 description-file =
     README.md
index c4fd757..e3f475c 100644 (file)
@@ -25,29 +25,29 @@ resources:
         swift_hash_suffix: {get_param: SwiftHashSuffix}
         swift_password: {get_param: SwiftPassword}
         swift_devices:
-          list_join:
+          Fn::Join:
           - ', '
           - Merge::Map:
               controller0:
-                list_join:
+                Fn::Join:
                 - ''
                 - - 'r1z1-'
                   - {get_attr: [controller0, networks, ctlplane, 0]}
                   - ':%PORT%/d1'
               SwiftStorage0:
-                list_join:
+                Fn::Join:
                 - ''
                 - - 'r1z1-'
                   - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
                   - ':%PORT%/d1'
         swift_proxy_memcache:
-          list_join:
+          Fn::Join:
             - ','
             - Merge::Map:
                 controller0:
-                  list_join:
+                  Fn::Join:
                     - ', '
-                    - - list_join:
+                    - - Fn::Join:
                         - ''
                         - - {get_attr: [controller0, networks, ctlplane, 0]}
                           - ':11211'
index 224e771..40e0573 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 description: 'Common Swift Storage Configuration'
 parameters:
   SwiftStorageImage:
@@ -53,29 +53,29 @@ resources:
         swift_hash_suffix: {get_param: SwiftHashSuffix}
         swift_password: {get_param: SwiftPassword}
         swift_devices:
-          list_join:
+          Fn::Join:
           - ', '
           - Merge::Map:
               controller0:
-                list_join:
+                Fn::Join:
                 - ''
                 - - 'r1z1-'
                   - {get_attr: [controller0, networks, ctlplane, 0]}
                   - ':%PORT%/d1'
               SwiftStorage0:
-                list_join:
+                Fn::Join:
                 - ''
                 - - 'r1z1-'
                   - {get_attr: [SwiftStorage0, networks, ctlplane, 0]}
                   - ':%PORT%/d1'
         swift_proxy_memcache:
-          list_join:
+          Fn::Join:
             - ','
             - Merge::Map:
                 controller0:
-                  list_join:
+                  Fn::Join:
                     - ', '
-                    - - list_join:
+                    - - Fn::Join:
                         - ''
                         - - {get_attr: [controller0, networks, ctlplane, 0]}
                           - ':11211'
index d076f50..de29d07 100755 (executable)
@@ -36,6 +36,8 @@ run_test "python $merge_py --hot examples/source_include_subkey_hot.yaml" exampl
 run_test "python $merge_py --hot examples/launchconfig1_hot.yaml examples/launchconfig2_hot.yaml" examples/launchconfig_result_hot.yaml
 run_test "python $merge_py --hot --scale NovaCompute=3 examples/scale1_hot.yaml" examples/scale_result_hot.yaml
 run_test "python $merge_py --hot --scale NovaCompute=3 examples/scale_map_hot.yaml" examples/scale_map_result_hot.yaml
+run_test "python $merge_py --hot --scale NovaCompute=5,1,2 examples/scale_map_hot.yaml" examples/scale_map_result_hot_blacklist.yaml
+run_test "python $merge_py --hot --scale NovaCompute=3, examples/scale_map_hot.yaml" examples/scale_map_result_hot.yaml
 echo
 trap - EXIT
 exit $fail
index 3549769..49aee6f 100644 (file)
@@ -26,7 +26,7 @@ class Cfn(object):
 class Hot(object):
 
     base_template = {
-        'heat_template_version': '2014-10-16',
+        'heat_template_version': '2013-05-23',
         'description': []
     }
     get_resource = 'get_resource'
@@ -80,6 +80,8 @@ def apply_scaling(template, scaling, in_copies=None):
 
     in_copies is reset to None when a dict {'Merge::Map': someobject} is
     encountered.
+
+    :param scaling: A dict of prefix -> (count, blacklists).
     """
     in_copies = dict(in_copies or {})
     # Shouldn't be needed but to avoid unexpected side effects/bugs we short
@@ -125,7 +127,7 @@ def scale_value(value, scaling, in_copies):
     """Scale out a value.
 
     :param value: The value to scale (not a container).
-    :param scaling: The scaling map to use.
+    :param scaling: The scaling map (prefix-> (copies, blacklist) to use.
     :param in_copies: What containers we're currently copying.
     :return: An iterator of the new values for the value as tuples:
         (prefix, copy_num, value). E.g. Compute0, 1, Compute1Foo
@@ -134,7 +136,7 @@ def scale_value(value, scaling, in_copies):
          - and that prefix is not in in_copies
     """
     if isinstance(value, (str, unicode)):
-        for prefix, copies in scaling.items():
+        for prefix, (copies, blacklist) in scaling.items():
             if not value.startswith(prefix):
                 continue
             suffix = value[len(prefix):]
@@ -144,7 +146,8 @@ def scale_value(value, scaling, in_copies):
                 return
             else:
                 for n in range(copies):
-                    yield prefix, n, prefix[:-1] + str(n) + suffix
+                    if n not in blacklist:
+                        yield prefix, n, prefix[:-1] + str(n) + suffix
                 return
         yield None, None, value
     else:
@@ -156,9 +159,11 @@ def parse_scaling(scaling_args):
     scaling_args = scaling_args or []
     result = {}
     for item in scaling_args:
-        key, value = item.split('=')
-        value = int(value)
-        result[key + '0'] = value
+        key, values = item.split('=')
+        values = values.split(',')
+        value = int(values[0])
+        blacklist = frozenset(int(v) for v in values[1:] if v)
+        result[key + '0'] = value, blacklist
     return result
 
 
@@ -251,10 +256,12 @@ def main(argv=None):
                         help='File to write output to. - for stdout',
                         default='-')
     parser.add_argument('--scale', action="append",
-        help="Names to scale out. Pass Prefix=1 to cause a key Prefix0Foo to "
+        help="Names to scale out. Pass Prefix=2 to cause a key Prefix0Foo to "
         "be copied to Prefix1Foo in the output, and value Prefix0Bar to be"
         "renamed to Prefix1Bar inside that copy, or copied to Prefix1Bar "
-        "outside of any copy.")
+        "outside of any copy. Pass Prefix=3,1 to cause Prefix1* to be elided"
+        "when scaling Prefix out. Prefix=4,1,2 will likewise elide Prefix1 and"
+        "Prefix2.")
     parser.add_argument(
         '--change-image-params', action='store_true', default=False,
         help="Change parameters in templates to match resource names. This was "
index 3df8597..d328449 100644 (file)
@@ -12,7 +12,7 @@ parameters:
     description: Timeout for PXE deployment of baremetal nodes
     type: number
 resources:
-  01_undercloudNovaDeployment:
+  undercloudNovaDeployment:
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: undercloudNovaConfig}
index ef8d7cd..a4adea0 100644 (file)
@@ -1,5 +1,5 @@
 description: All-in-one baremetal OpenStack and all dependencies.
-heat_template_version: 2014-10-16
+heat_template_version: 2013-05-23
 parameters:
   AdminPassword:
     default: unset
@@ -181,6 +181,12 @@ parameters:
     description: Keystone key for signing tokens.
     type: string
     hidden: true
+  DefaultSignalTransport:
+    default: CFN_SIGNAL
+    description: Transport to use for software-config signals.
+    type: string
+    constraints:
+      - allowed_values: [ CFN_SIGNAL, HEAT_SIGNAL, NO_SIGNAL ]
 resources:
   RabbitCookie:
     type: OS::Heat::RandomString
@@ -188,6 +194,10 @@ resources:
       length: 20
       salt:
         get_param: RabbitCookieSalt
+  MysqlRootPassword:
+    type: OS::Heat::RandomString
+    properties:
+      length: 10
   undercloudConfig:
     type: OS::Heat::StructuredConfig
     properties:
@@ -270,6 +280,7 @@ resources:
           signing_certificate: {get_param: KeystoneSigningCertificate}
         mysql:
           innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
+          root-password: {get_resource: MysqlRootPassword}
         neutron:
           host: 127.0.0.1
           ovs_db: mysql://neutron:unset@localhost/ovs_neutron?charset=utf8
@@ -319,11 +330,13 @@ resources:
       networks:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
-  99_undercloudDeployment:
+  undercloudDeployment:
+    depends_on: [undercloudPassthroughDeployment]
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: undercloudConfig}
       server: {get_resource: undercloud}
+      signal_transport: {get_param: DefaultSignalTransport}
       input_values:
         bootstack_nodeid:
           get_attr:
@@ -337,24 +350,25 @@ resources:
           - ctlplane
           - 0
         heat.watch_server_url:
-          list_join:
+          Fn::Join:
             - ''
             - - 'http://'
               - get_attr: [undercloud, networks, ctlplane, 0]
               - ':8003'
         heat.metadata_server_url:
-          list_join:
+          Fn::Join:
             - ''
             - - 'http://'
               - {get_attr: [undercloud, networks, ctlplane, 0]}
               - ':8000'
         heat.waitcondition_server_url:
-          list_join:
+          Fn::Join:
             - ''
             - - 'http://'
               - {get_attr: [undercloud, networks, ctlplane, 0]}
               - ':8000/v1/waitcondition'
-  00_undercloudPassthroughDeployment:
+  undercloudPassthroughDeployment:
+    depends_on: [undercloudNovaDeployment]
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: undercloudPassthroughConfig}
index 8fff9d5..6e778e5 100644 (file)
@@ -12,7 +12,8 @@ parameters:
     type: string
     hidden: true
 resources:
-  01_undercloudNovaDeployment:
+  undercloudNovaDeployment:
+    depends_on: [undercloudIronicDeployment]
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: undercloudNovaConfig}
@@ -20,7 +21,7 @@ resources:
       signal_transport: NO_SIGNAL
       input_values:
         nova_service_password: {get_param: NovaPassword}
-  02_undercloudIronicDeployment:
+  undercloudIronicDeployment:
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: undercloudIronicConfig}
index 1480938..ebd14ef 100644 (file)
@@ -24,7 +24,7 @@ parameters:
     description: What username to ssh to the virtual power host with.
     type: string
 resources:
-  01_undercloudNovaDeployment:
+  undercloudNovaDeployment:
     type: OS::Heat::StructuredDeployment
     properties:
       config: {get_resource: undercloudNovaConfig}