Make puppet-applying *Post resources depend on hieradata
authorSteven Hardy <shardy@redhat.com>
Fri, 12 Jun 2015 14:43:30 +0000 (15:43 +0100)
committerSteven Hardy <shardy@redhat.com>
Tue, 16 Jun 2015 08:12:09 +0000 (04:12 -0400)
When you do a stack-update which affects, e.g ControllerDeployment
such that some value in hieradata is updated (for example changing
the "Debug" parameter to True), we only write the hieradata file and
don't reapply the manifests.

So we introduce a dependency on the deploy_stdout values from all
hieradata applying configs, such that the manifests will be re-applied
on update if the data is changed.

This requires https://review.openstack.org/#/c/190282/ so that
99-refresh-completed will return the derived config ID as part of the
deploy_stdout payload.

Closes-Bug: #1463092
Change-Id: I1175248c3236d0c42e37d062afce550efce8aadc

21 files changed:
ceph-storage-post.yaml
ceph-storage.yaml
cinder-storage-post.yaml
cinder-storage.yaml
compute-post.yaml
compute.yaml
controller-post.yaml
controller.yaml
overcloud-without-mergepy.yaml
puppet/ceph-storage-post-puppet.yaml
puppet/ceph-storage-puppet.yaml
puppet/cinder-storage-post.yaml
puppet/cinder-storage-puppet.yaml
puppet/compute-post-puppet.yaml
puppet/compute-puppet.yaml
puppet/controller-post-puppet.yaml
puppet/controller-puppet.yaml
puppet/swift-storage-post.yaml
puppet/swift-storage-puppet.yaml
swift-storage-post.yaml
swift-storage.yaml

index 06c2a29..734f90b 100644 (file)
@@ -6,6 +6,9 @@ description: 'Ceph Storage Post Deployment'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
 
 resources:
 
index 138e6ea..2df3d70 100644 (file)
@@ -148,3 +148,6 @@ outputs:
   storage_mgmt_ip_address:
     description: IP address of the server in the storage_mgmt network
     value: {get_attr: [StorageMgmtPort, ip_address]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"
index 8943c50..ad4e046 100644 (file)
@@ -6,6 +6,9 @@ description: 'Common Block Storage Post Deployment'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
 
 resources:
 
index 9541ed1..c282440 100644 (file)
@@ -203,3 +203,6 @@ outputs:
   storage_mgmt_ip_address:
     description: IP address of the server in the storage_mgmt network
     value: {get_attr: [StorageMgmtPort, ip_address]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"
index e568a5a..695690d 100644 (file)
@@ -6,6 +6,9 @@ description: 'Compute Post Deployment'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
 
 resources:
 
index abd5910..7fcdf42 100644 (file)
@@ -473,3 +473,6 @@ outputs:
     description: Heat resource handle for the Nova compute server
     value:
       {get_resource: NovaCompute}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"
index 926adea..aac9635 100644 (file)
@@ -6,6 +6,9 @@ description: 'Controller Post Deployment'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
 
 resources:
 
index 9fc9156..366e60d 100644 (file)
@@ -1047,3 +1047,6 @@ outputs:
         template: "IP:11211"
         params:
           IP: {get_attr: [Controller, networks, ctlplane, 0]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"
index 97f0bd1..5184c7c 100644 (file)
@@ -1062,30 +1062,36 @@ resources:
     depends_on: [ControllerBootstrapNodeDeployment, ControllerAllNodesDeployment, ControllerSwiftDeployment, ControllerCephDeployment]
     properties:
       servers: {get_attr: [Controller, attributes, nova_server_resource]}
+      NodeConfigIdentifiers: {get_attr: [Controller, attributes, config_identifier]}
 
   ComputeNodesPostDeployment:
     type: OS::TripleO::ComputePostDeployment
     depends_on: [ComputeAllNodesDeployment, ComputeCephDeployment]
     properties:
       servers: {get_attr: [Compute, attributes, nova_server_resource]}
+      NodeConfigIdentifiers: {get_attr: [Compute, attributes, config_identifier]}
 
   ObjectStorageNodesPostDeployment:
     type: OS::TripleO::ObjectStoragePostDeployment
     depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
     properties:
       servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+      NodeConfigIdentifiers: {get_attr: [ObjectStorage, attributes, config_identifier]}
+
 
   BlockStorageNodesPostDeployment:
     type: OS::TripleO::BlockStoragePostDeployment
     depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
     properties:
       servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+      NodeConfigIdentifiers: {get_attr: [BlockStorage, attributes, config_identifier]}
 
   CephStorageNodesPostDeployment:
     type: OS::TripleO::CephStoragePostDeployment
     depends_on: [ControllerNodesPostDeployment, CephStorageCephDeployment, CephStorageAllNodesDeployment]
     properties:
       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+      NodeConfigIdentifiers: {get_attr: [CephStorage, attributes, config_identifier]}
 
 outputs:
   KeystoneURL:
index eb62ba1..1b5b944 100644 (file)
@@ -6,6 +6,10 @@ description: >
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
+
 
 resources:
   CephStoragePuppetConfig:
@@ -22,6 +26,8 @@ resources:
     properties:
       servers:  {get_param: servers}
       config: {get_resource: CephStoragePuppetConfig}
+      input_values:
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   # Note, this should come last, so use depends_on to ensure
   # this is created after any other resources.
index 1ab381a..2c36086 100644 (file)
@@ -152,3 +152,7 @@ outputs:
   storage_mgmt_ip_address:
     description: IP address of the server in the storage_mgmt network
     value: {get_attr: [StorageMgmtPort, ip_address]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: {get_attr: [CephStorageDeployment, deploy_stdout]}
+
index f17a156..24d2b8a 100644 (file)
@@ -4,6 +4,9 @@ description: 'OpenStack cinder storage post deployment for Puppet'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
 
 resources:
 
index 74df116..89a94bc 100644 (file)
@@ -260,3 +260,6 @@ outputs:
   storage_mgmt_ip_address:
     description: IP address of the server in the storage_mgmt network
     value: {get_attr: [StorageMgmtPort, ip_address]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: {get_attr: [BlockStorageDeployment, deploy_stdout]}
index ca5eb64..b4a6126 100644 (file)
@@ -6,6 +6,10 @@ description: >
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
+
 
 resources:
 
@@ -23,6 +27,8 @@ resources:
     properties:
       servers:  {get_param: servers}
       config: {get_resource: ComputePuppetConfig}
+      input_values:
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   # Note, this should come last, so use depends_on to ensure
   # this is created after any other resources.
index 9e17b89..822df81 100644 (file)
@@ -513,3 +513,7 @@ outputs:
     description: Heat resource handle for the Nova compute server
     value:
       {get_resource: NovaCompute}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: {get_attr: [NovaComputeDeployment, deploy_stdout]}
+
index 373daba..e88561e 100644 (file)
@@ -6,6 +6,10 @@ description: >
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
+
 
 resources:
 
@@ -23,6 +27,7 @@ resources:
       config: {get_resource: ControllerPuppetConfig}
       input_values:
         step: 1
+        update_identifier: {get_param: NodeConfigIdentifiers}
       actions: ['CREATE'] # no need for two passes on an UPDATE
 
   ControllerServicesBaseDeployment_Step2:
@@ -33,6 +38,7 @@ resources:
       config: {get_resource: ControllerPuppetConfig}
       input_values:
         step: 2
+        update_identifier: {get_param: NodeConfigIdentifiers}
       actions: ['CREATE'] # no need for two passes on an UPDATE
 
   ControllerRingbuilderPuppetConfig:
@@ -54,6 +60,8 @@ resources:
     properties:
       servers:  {get_param: servers}
       config: {get_resource: ControllerRingbuilderPuppetConfig}
+      input_values:
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   ControllerOvercloudServicesDeployment_Step4:
     type: OS::Heat::StructuredDeployments
@@ -63,6 +71,7 @@ resources:
       config: {get_resource: ControllerPuppetConfig}
       input_values:
         step: 3
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   ControllerOvercloudServicesDeployment_Step5:
     type: OS::Heat::StructuredDeployments
@@ -72,6 +81,7 @@ resources:
       config: {get_resource: ControllerPuppetConfig}
       input_values:
         step: 4
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   # Note, this should come last, so use depends_on to ensure
   # this is created after any other resources.
index 05bd27a..68d70a2 100644 (file)
@@ -1063,3 +1063,6 @@ outputs:
         template: "IP:11211"
         params:
           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
+  config_identifier:
+    description: identifier which changes if the controller configuration may need re-applying
+    value: {get_attr: [ControllerDeployment, deploy_stdout]}
index 7a3c1ab..ee50c86 100644 (file)
@@ -4,6 +4,10 @@ description: 'OpenStack swift storage node post deployment for Puppet'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
+
 
 resources:
 
@@ -21,6 +25,8 @@ resources:
     properties:
       servers:  {get_param: servers}
       config: {get_resource: StoragePuppetConfig}
+      input_values:
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   StorageRingbuilderPuppetConfig:
     type: OS::Heat::SoftwareConfig
@@ -37,6 +43,8 @@ resources:
     properties:
       servers:  {get_param: servers}
       config: {get_resource: StorageRingbuilderPuppetConfig}
+      input_values:
+        update_identifier: {get_param: NodeConfigIdentifiers}
 
   # Note, this should come last, so use depends_on to ensure
   # this is created after any other resources.
index e7ac613..7f4e2b0 100644 (file)
@@ -212,3 +212,7 @@ outputs:
   storage_mgmt_ip_address:
     description: IP address of the server in the storage_mgmt network
     value: {get_attr: [StorageMgmtPort, ip_address]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: {get_attr: [SwiftStorageHieraDeploy, deploy_stdout]}
+
index 53490d7..1b1c406 100644 (file)
@@ -6,6 +6,9 @@ description: 'Swift Storage Post Deployment'
 parameters:
   servers:
     type: json
+  NodeConfigIdentifiers:
+     type: json
+     description: Value which changes if the node configuration may need to be re-applied
 
 resources:
 
index c281934..e2d4da9 100644 (file)
@@ -194,3 +194,6 @@ outputs:
   storage_mgmt_ip_address:
     description: IP address of the server in the storage_mgmt network
     value: {get_attr: [StorageMgmtPort, ip_address]}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"