class Resource(object):
- ACTIONS = (CREATE, DELETE, UPDATE, ROLLBACK, SUSPEND, RESUME
- ) = ('CREATE', 'DELETE', 'UPDATE', 'ROLLBACK',
+ ACTIONS = (INIT, CREATE, DELETE, UPDATE, ROLLBACK, SUSPEND, RESUME
+ ) = ('INIT', 'CREATE', 'DELETE', 'UPDATE', 'ROLLBACK',
'SUSPEND', 'RESUME')
STATUSES = (IN_PROGRESS, FAILED, COMPLETE
self.data = resource.data
else:
self.resource_id = None
- self.action = None
- self.status = None
+ self.action = self.INIT
+ self.status = self.COMPLETE
self.status_reason = ''
self.id = None
self.data = []
Create the resource. Subclasses should provide a handle_create() method
to customise creation.
'''
- assert None in (self.action, self.status), 'invalid state for create'
+ if (self.action, self.status) != (self.INIT, self.COMPLETE):
+ exc = exception.Error('State %s invalid for create'
+ % str(self.state))
+ raise exception.ResourceFailure(exc)
logger.info('creating %s' % str(self))
if (self.action, self.status) == (self.DELETE, self.COMPLETE):
return
# No need to delete if the resource has never been created
- if self.action is None:
+ if self.action == self.INIT:
return
initial_state = self.state
name_match = lambda r: True
return [api.format_stack_resource(resource)
- for resource in stack
- if resource.id is not None and name_match(resource)]
+ for resource in stack if name_match(resource)]
@request_context
def list_stack_resources(self, cnxt, stack_identity):
stack = parser.Stack.load(cnxt, stack=s)
return [api.format_stack_resource(resource, detail=False)
- for resource in stack if resource.id is not None]
+ for resource in stack]
@request_context
def stack_suspend(self, cnxt, stack_identity):
def test_state_defaults(self):
tmpl = {'Type': 'Foo'}
res = generic_rsrc.GenericResource('test_res_def', tmpl, self.stack)
- self.assertEqual(res.state, (None, None))
+ self.assertEqual(res.state, (res.INIT, res.COMPLETE))
self.assertEqual(res.status_reason, '')
def test_state_set(self):