summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Hardy <shardy@redhat.com>2015-06-12 15:43:30 +0100
committerSteven Hardy <shardy@redhat.com>2015-06-16 04:12:09 -0400
commitec3137dc6ec6ff4871125ac2802aefe3c2089805 (patch)
tree08e91e2c6f3002baa610af74f2762d32d53b980a
parent48d07db384a3e8a36a2a92e95ef3ad4ed5c6071e (diff)
Make puppet-applying *Post resources depend on hieradata
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
-rw-r--r--ceph-storage-post.yaml3
-rw-r--r--ceph-storage.yaml3
-rw-r--r--cinder-storage-post.yaml3
-rw-r--r--cinder-storage.yaml3
-rw-r--r--compute-post.yaml3
-rw-r--r--compute.yaml3
-rw-r--r--controller-post.yaml3
-rw-r--r--controller.yaml3
-rw-r--r--overcloud-without-mergepy.yaml6
-rw-r--r--puppet/ceph-storage-post-puppet.yaml6
-rw-r--r--puppet/ceph-storage-puppet.yaml4
-rw-r--r--puppet/cinder-storage-post.yaml3
-rw-r--r--puppet/cinder-storage-puppet.yaml3
-rw-r--r--puppet/compute-post-puppet.yaml6
-rw-r--r--puppet/compute-puppet.yaml4
-rw-r--r--puppet/controller-post-puppet.yaml10
-rw-r--r--puppet/controller-puppet.yaml3
-rw-r--r--puppet/swift-storage-post.yaml8
-rw-r--r--puppet/swift-storage-puppet.yaml4
-rw-r--r--swift-storage-post.yaml3
-rw-r--r--swift-storage.yaml3
21 files changed, 87 insertions, 0 deletions
diff --git a/ceph-storage-post.yaml b/ceph-storage-post.yaml
index 06c2a291..734f90bd 100644
--- a/ceph-storage-post.yaml
+++ b/ceph-storage-post.yaml
@@ -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:
diff --git a/ceph-storage.yaml b/ceph-storage.yaml
index 138e6ea5..2df3d70d 100644
--- a/ceph-storage.yaml
+++ b/ceph-storage.yaml
@@ -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"
diff --git a/cinder-storage-post.yaml b/cinder-storage-post.yaml
index 8943c502..ad4e0460 100644
--- a/cinder-storage-post.yaml
+++ b/cinder-storage-post.yaml
@@ -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:
diff --git a/cinder-storage.yaml b/cinder-storage.yaml
index 9541ed1c..c2824400 100644
--- a/cinder-storage.yaml
+++ b/cinder-storage.yaml
@@ -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"
diff --git a/compute-post.yaml b/compute-post.yaml
index e568a5a6..695690d4 100644
--- a/compute-post.yaml
+++ b/compute-post.yaml
@@ -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:
diff --git a/compute.yaml b/compute.yaml
index abd59103..7fcdf421 100644
--- a/compute.yaml
+++ b/compute.yaml
@@ -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"
diff --git a/controller-post.yaml b/controller-post.yaml
index 926adeae..aac96357 100644
--- a/controller-post.yaml
+++ b/controller-post.yaml
@@ -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:
diff --git a/controller.yaml b/controller.yaml
index 9fc91562..366e60d3 100644
--- a/controller.yaml
+++ b/controller.yaml
@@ -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"
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 97f0bd1f..5184c7cf 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -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:
diff --git a/puppet/ceph-storage-post-puppet.yaml b/puppet/ceph-storage-post-puppet.yaml
index eb62ba1e..1b5b944d 100644
--- a/puppet/ceph-storage-post-puppet.yaml
+++ b/puppet/ceph-storage-post-puppet.yaml
@@ -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.
diff --git a/puppet/ceph-storage-puppet.yaml b/puppet/ceph-storage-puppet.yaml
index 1ab381af..2c360868 100644
--- a/puppet/ceph-storage-puppet.yaml
+++ b/puppet/ceph-storage-puppet.yaml
@@ -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]}
+
diff --git a/puppet/cinder-storage-post.yaml b/puppet/cinder-storage-post.yaml
index f17a1567..24d2b8a3 100644
--- a/puppet/cinder-storage-post.yaml
+++ b/puppet/cinder-storage-post.yaml
@@ -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:
diff --git a/puppet/cinder-storage-puppet.yaml b/puppet/cinder-storage-puppet.yaml
index 74df116a..89a94bc4 100644
--- a/puppet/cinder-storage-puppet.yaml
+++ b/puppet/cinder-storage-puppet.yaml
@@ -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]}
diff --git a/puppet/compute-post-puppet.yaml b/puppet/compute-post-puppet.yaml
index ca5eb649..b4a6126b 100644
--- a/puppet/compute-post-puppet.yaml
+++ b/puppet/compute-post-puppet.yaml
@@ -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.
diff --git a/puppet/compute-puppet.yaml b/puppet/compute-puppet.yaml
index 9e17b890..822df811 100644
--- a/puppet/compute-puppet.yaml
+++ b/puppet/compute-puppet.yaml
@@ -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]}
+
diff --git a/puppet/controller-post-puppet.yaml b/puppet/controller-post-puppet.yaml
index 373daba2..e88561e6 100644
--- a/puppet/controller-post-puppet.yaml
+++ b/puppet/controller-post-puppet.yaml
@@ -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.
diff --git a/puppet/controller-puppet.yaml b/puppet/controller-puppet.yaml
index 05bd27ab..68d70a23 100644
--- a/puppet/controller-puppet.yaml
+++ b/puppet/controller-puppet.yaml
@@ -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]}
diff --git a/puppet/swift-storage-post.yaml b/puppet/swift-storage-post.yaml
index 7a3c1abb..ee50c86a 100644
--- a/puppet/swift-storage-post.yaml
+++ b/puppet/swift-storage-post.yaml
@@ -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.
diff --git a/puppet/swift-storage-puppet.yaml b/puppet/swift-storage-puppet.yaml
index e7ac6135..7f4e2b08 100644
--- a/puppet/swift-storage-puppet.yaml
+++ b/puppet/swift-storage-puppet.yaml
@@ -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]}
+
diff --git a/swift-storage-post.yaml b/swift-storage-post.yaml
index 53490d71..1b1c406d 100644
--- a/swift-storage-post.yaml
+++ b/swift-storage-post.yaml
@@ -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:
diff --git a/swift-storage.yaml b/swift-storage.yaml
index c2819349..e2d4da93 100644
--- a/swift-storage.yaml
+++ b/swift-storage.yaml
@@ -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"