From a8ae32ab5cf65c3f680a8a51fc109be843f8919d Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Tue, 12 Jun 2012 12:45:35 +1000 Subject: [PATCH] Make sure create happens if a resource has been deleted (recovery situation) Change-Id: Ife4492bb32c4b1bbcedeba6e6bdd89bd952effcd Signed-off-by: Angus Salkeld --- heat/engine/cloud_watch.py | 5 ++--- heat/engine/eip.py | 10 ++++------ heat/engine/escalation_policy.py | 5 ++--- heat/engine/instance.py | 10 ++++------ heat/engine/resources.py | 2 +- heat/engine/security_group.py | 5 ++--- heat/engine/volume.py | 11 ++++------- heat/engine/wait_condition.py | 10 ++++------ 8 files changed, 23 insertions(+), 35 deletions(-) diff --git a/heat/engine/cloud_watch.py b/heat/engine/cloud_watch.py index df7051dc..750e9491 100644 --- a/heat/engine/cloud_watch.py +++ b/heat/engine/cloud_watch.py @@ -63,7 +63,7 @@ class CloudWatchAlarm(Resource): return Resource.validate(self) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) @@ -81,8 +81,7 @@ class CloudWatchAlarm(Resource): self.state_set(self.CREATE_COMPLETE) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) diff --git a/heat/engine/eip.py b/heat/engine/eip.py index ed5f47ad..1bd757ee 100644 --- a/heat/engine/eip.py +++ b/heat/engine/eip.py @@ -43,7 +43,7 @@ class ElasticIp(Resource): def create(self): """Allocate a floating IP for the current tenant.""" - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) super(ElasticIp, self).create() @@ -62,8 +62,7 @@ class ElasticIp(Resource): def delete(self): """De-allocate a floating IP.""" - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) @@ -110,7 +109,7 @@ class ElasticIpAssociation(Resource): def create(self): """Add a floating IP address to a server.""" - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) super(ElasticIpAssociation, self).create() @@ -126,8 +125,7 @@ class ElasticIpAssociation(Resource): def delete(self): """Remove a floating IP address from a server.""" - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) diff --git a/heat/engine/escalation_policy.py b/heat/engine/escalation_policy.py index e5b9c9dc..65e34e02 100644 --- a/heat/engine/escalation_policy.py +++ b/heat/engine/escalation_policy.py @@ -41,15 +41,14 @@ class EscalationPolicy(Resource): return Resource.validate(self) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) self.state_set(self.CREATE_COMPLETE) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) diff --git a/heat/engine/instance.py b/heat/engine/instance.py index 1342e9d6..66b23565 100644 --- a/heat/engine/instance.py +++ b/heat/engine/instance.py @@ -49,15 +49,14 @@ class Restarter(Resource): super(Restarter, self).__init__(name, json_snippet, stack) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) self.state_set(self.CREATE_COMPLETE) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) Resource.delete(self) @@ -219,7 +218,7 @@ class Instance(Resource): """ pass - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) @@ -288,8 +287,7 @@ class Instance(Resource): return None def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) Resource.delete(self) diff --git a/heat/engine/resources.py b/heat/engine/resources.py index e2f6d991..70e6f68c 100644 --- a/heat/engine/resources.py +++ b/heat/engine/resources.py @@ -209,7 +209,7 @@ class GenericResource(Resource): super(GenericResource, self).__init__(name, json_snippet, stack) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) super(GenericResource, self).create() diff --git a/heat/engine/security_group.py b/heat/engine/security_group.py index 7939bb92..4f1ebb6c 100644 --- a/heat/engine/security_group.py +++ b/heat/engine/security_group.py @@ -35,7 +35,7 @@ class SecurityGroup(Resource): super(SecurityGroup, self).__init__(name, json_snippet, stack) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) @@ -78,8 +78,7 @@ class SecurityGroup(Resource): return Resource.validate(self) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) diff --git a/heat/engine/volume.py b/heat/engine/volume.py index 7c61892c..b871d8c9 100644 --- a/heat/engine/volume.py +++ b/heat/engine/volume.py @@ -34,7 +34,7 @@ class Volume(Resource): super(Volume, self).__init__(name, json_snippet, stack) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) super(Volume, self).create() @@ -59,8 +59,7 @@ class Volume(Resource): return Resource.validate(self) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return if self.instance_id is not None: @@ -90,8 +89,7 @@ class VolumeAttachment(Resource): super(VolumeAttachment, self).__init__(name, json_snippet, stack) def create(self): - - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) super(VolumeAttachment, self).create() @@ -122,8 +120,7 @@ class VolumeAttachment(Resource): return Resource.validate(self) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) Resource.delete(self) diff --git a/heat/engine/wait_condition.py b/heat/engine/wait_condition.py index 6a0bdd33..48d314eb 100644 --- a/heat/engine/wait_condition.py +++ b/heat/engine/wait_condition.py @@ -38,7 +38,7 @@ class WaitConditionHandle(Resource): super(WaitConditionHandle, self).__init__(name, json_snippet, stack) def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) @@ -51,8 +51,7 @@ class WaitConditionHandle(Resource): self.state_set(self.CREATE_COMPLETE) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) @@ -84,7 +83,7 @@ class WaitCondition(Resource): return self.resource_id def create(self): - if self.state is not None: + if self.state in [self.CREATE_IN_PROGRESS, self.CREATE_COMPLETE]: return self.state_set(self.CREATE_IN_PROGRESS) Resource.create(self) @@ -139,8 +138,7 @@ class WaitCondition(Resource): raise exception.Error(reason) def delete(self): - if self.state == self.DELETE_IN_PROGRESS or \ - self.state == self.DELETE_COMPLETE: + if self.state in [self.DELETE_IN_PROGRESS, self.DELETE_COMPLETE]: return self.state_set(self.DELETE_IN_PROGRESS) -- 2.45.2