diff --git a/crowbar_framework/app/models/deployer_service.rb b/crowbar_framework/app/models/deployer_service.rb index 52415abb56..b06013f5de 100644 --- a/crowbar_framework/app/models/deployer_service.rb +++ b/crowbar_framework/app/models/deployer_service.rb @@ -132,7 +132,33 @@ def transition(inst, name, state) end if state == "delete" - # Do more work here - one day. + # Remove node from all applied proposals + RoleObject.all.select(&:proposal?).each do |applied_proposal| + save = false + attributes = applied_proposal.override_attributes[applied_proposal.barclamp] + ["elements", "elements_expanded"].each do |element_key| + next unless attributes.key?(element_key) + attributes[element_key].each do |role_name, elements| + next unless elements.include?(name) + elements.delete(name) + attributes[element_key][role_name] = elements + save = true + end + end + applied_proposal.save if save + end + + # Remove node from all proposals + Proposal.all.each do |proposal| + save = false + proposal.elements.each do |role_name, elements| + next unless elements.include?(name) + elements.delete(name) + proposal.elements[role_name] = elements + save = true + end + proposal.save if save + end end @logger.debug("Deployer transition: exiting: #{name} for #{state}")