Make sure create happens if a resource has been deleted

(recovery situation)

Change-Id: Ife4492bb32c4b1bbcedeba6e6bdd89bd952effcd
Signed-off-by: Angus Salkeld <asalkeld@redhat.com>
This commit is contained in:
Angus Salkeld 2012-06-12 12:45:35 +10:00
parent 986d203cca
commit a8ae32ab5c
8 changed files with 23 additions and 35 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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)

View File

@ -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)