From ec3137dc6ec6ff4871125ac2802aefe3c2089805 Mon Sep 17 00:00:00 2001 From: Steven Hardy Date: Fri, 12 Jun 2015 15:43:30 +0100 Subject: 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 --- ceph-storage-post.yaml | 3 +++ ceph-storage.yaml | 3 +++ cinder-storage-post.yaml | 3 +++ cinder-storage.yaml | 3 +++ compute-post.yaml | 3 +++ compute.yaml | 3 +++ controller-post.yaml | 3 +++ controller.yaml | 3 +++ overcloud-without-mergepy.yaml | 6 ++++++ puppet/ceph-storage-post-puppet.yaml | 6 ++++++ puppet/ceph-storage-puppet.yaml | 4 ++++ puppet/cinder-storage-post.yaml | 3 +++ puppet/cinder-storage-puppet.yaml | 3 +++ puppet/compute-post-puppet.yaml | 6 ++++++ puppet/compute-puppet.yaml | 4 ++++ puppet/controller-post-puppet.yaml | 10 ++++++++++ puppet/controller-puppet.yaml | 3 +++ puppet/swift-storage-post.yaml | 8 ++++++++ puppet/swift-storage-puppet.yaml | 4 ++++ swift-storage-post.yaml | 3 +++ swift-storage.yaml | 3 +++ 21 files changed, 87 insertions(+) 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" -- cgit 1.2.3-korg