Store the context in the resources
It's a pain to have to look it up in the stack every time Change-Id: I655260aafd17bc17b5895f5b53d79b20aa8eecbb Signed-off-by: Zane Bitter <zbitter@redhat.com>
This commit is contained in:
parent
c68b2c5315
commit
9c7c0dea62
|
@ -68,12 +68,12 @@ class CloudWatchAlarm(Resource):
|
||||||
'stack_name': self.stack.name
|
'stack_name': self.stack.name
|
||||||
}
|
}
|
||||||
|
|
||||||
wr = db_api.watch_rule_create(self.stack.context, wr_values)
|
wr = db_api.watch_rule_create(self.context, wr_values)
|
||||||
self.instance_id = wr.id
|
self.instance_id = wr.id
|
||||||
|
|
||||||
def handle_delete(self):
|
def handle_delete(self):
|
||||||
try:
|
try:
|
||||||
db_api.watch_rule_delete(self.stack.context, self.name)
|
db_api.watch_rule_delete(self.context, self.name)
|
||||||
except exception.NotFound:
|
except exception.NotFound:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ class Resource(object):
|
||||||
def __init__(self, name, json_snippet, stack):
|
def __init__(self, name, json_snippet, stack):
|
||||||
self.references = []
|
self.references = []
|
||||||
self.stack = stack
|
self.stack = stack
|
||||||
|
self.context = stack.context
|
||||||
self.name = name
|
self.name = name
|
||||||
self.t = stack.resolve_static_data(json_snippet)
|
self.t = stack.resolve_static_data(json_snippet)
|
||||||
self.properties = checkeddict.Properties(name, self.properties_schema)
|
self.properties = checkeddict.Properties(name, self.properties_schema)
|
||||||
|
@ -77,7 +78,7 @@ class Resource(object):
|
||||||
# place for it.
|
# place for it.
|
||||||
self.t['Metadata'] = {}
|
self.t['Metadata'] = {}
|
||||||
|
|
||||||
resource = db_api.resource_get_by_name_and_stack(self.stack.context,
|
resource = db_api.resource_get_by_name_and_stack(self.context,
|
||||||
name, stack.id)
|
name, stack.id)
|
||||||
if resource:
|
if resource:
|
||||||
self.instance_id = resource.nova_instance
|
self.instance_id = resource.nova_instance
|
||||||
|
@ -117,7 +118,7 @@ class Resource(object):
|
||||||
if self._keystone:
|
if self._keystone:
|
||||||
return self._keystone
|
return self._keystone
|
||||||
|
|
||||||
con = self.stack.context
|
con = self.context
|
||||||
self._keystone = kc.Client(username=con.username,
|
self._keystone = kc.Client(username=con.username,
|
||||||
password=con.password,
|
password=con.password,
|
||||||
tenant_name=con.tenant,
|
tenant_name=con.tenant,
|
||||||
|
@ -128,8 +129,7 @@ class Resource(object):
|
||||||
if service_type in self._nova:
|
if service_type in self._nova:
|
||||||
return self._nova[service_type]
|
return self._nova[service_type]
|
||||||
|
|
||||||
con = self.stack.context
|
self._nova[service_type] = auth.authenticate(self.context,
|
||||||
self._nova[service_type] = auth.authenticate(con,
|
|
||||||
service_type=service_type,
|
service_type=service_type,
|
||||||
service_name=None)
|
service_name=None)
|
||||||
return self._nova[service_type]
|
return self._nova[service_type]
|
||||||
|
@ -203,7 +203,7 @@ class Resource(object):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
try:
|
try:
|
||||||
db_api.resource_get(self.stack.context, self.id).delete()
|
db_api.resource_get(self.context, self.id).delete()
|
||||||
except exception.NotFound:
|
except exception.NotFound:
|
||||||
# Don't fail on delete if the db entry has
|
# Don't fail on delete if the db entry has
|
||||||
# not been created yet.
|
# not been created yet.
|
||||||
|
@ -225,7 +225,7 @@ class Resource(object):
|
||||||
'rsrc_metadata': metadata,
|
'rsrc_metadata': metadata,
|
||||||
'stack_name': self.stack.name}
|
'stack_name': self.stack.name}
|
||||||
|
|
||||||
new_rs = db_api.resource_create(self.stack.context, rs)
|
new_rs = db_api.resource_create(self.context, rs)
|
||||||
self.id = new_rs.id
|
self.id = new_rs.id
|
||||||
|
|
||||||
if new_rs.stack:
|
if new_rs.stack:
|
||||||
|
@ -247,7 +247,7 @@ class Resource(object):
|
||||||
'resource_type': self.t['Type'],
|
'resource_type': self.t['Type'],
|
||||||
'resource_properties': dict(self.properties)}
|
'resource_properties': dict(self.properties)}
|
||||||
try:
|
try:
|
||||||
db_api.event_create(self.stack.context, ev)
|
db_api.event_create(self.context, ev)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
logger.error('DB error %s' % str(ex))
|
logger.error('DB error %s' % str(ex))
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ class Resource(object):
|
||||||
|
|
||||||
if self.id is not None:
|
if self.id is not None:
|
||||||
try:
|
try:
|
||||||
rs = db_api.resource_get(self.stack.context, self.id)
|
rs = db_api.resource_get(self.context, self.id)
|
||||||
rs.update_and_save({'state': self.state,
|
rs.update_and_save({'state': self.state,
|
||||||
'state_description': reason,
|
'state_description': reason,
|
||||||
'nova_instance': self.instance_id})
|
'nova_instance': self.instance_id})
|
||||||
|
|
|
@ -46,7 +46,7 @@ class Stack(Resource):
|
||||||
|
|
||||||
def nested(self):
|
def nested(self):
|
||||||
if self._nested is None and self.instance_id is not None:
|
if self._nested is None and self.instance_id is not None:
|
||||||
self._nested = parser.Stack.load(self.stack.context,
|
self._nested = parser.Stack.load(self.context,
|
||||||
self.instance_id)
|
self.instance_id)
|
||||||
|
|
||||||
if self._nested is None:
|
if self._nested is None:
|
||||||
|
@ -61,7 +61,7 @@ class Stack(Resource):
|
||||||
template = parser.Template(child_template)
|
template = parser.Template(child_template)
|
||||||
params = parser.Parameters(self.name, template, self._params())
|
params = parser.Parameters(self.name, template, self._params())
|
||||||
|
|
||||||
self._nested = parser.Stack(self.stack.context,
|
self._nested = parser.Stack(self.context,
|
||||||
self.name,
|
self.name,
|
||||||
template,
|
template,
|
||||||
params)
|
params)
|
||||||
|
|
|
@ -49,7 +49,7 @@ class User(Resource):
|
||||||
'Password' in self.properties['LoginProfile']:
|
'Password' in self.properties['LoginProfile']:
|
||||||
passwd = self.properties['LoginProfile']['Password']
|
passwd = self.properties['LoginProfile']['Password']
|
||||||
|
|
||||||
tenant_id = self.stack.context.tenant_id
|
tenant_id = self.context.tenant_id
|
||||||
user = self.keystone().users.create(self.name, passwd,
|
user = self.keystone().users.create(self.name, passwd,
|
||||||
'%s@heat-api.org' % self.name,
|
'%s@heat-api.org' % self.name,
|
||||||
tenant_id=tenant_id,
|
tenant_id=tenant_id,
|
||||||
|
@ -119,7 +119,7 @@ class AccessKey(Resource):
|
||||||
self._secret = None
|
self._secret = None
|
||||||
|
|
||||||
def _user_from_name(self, username):
|
def _user_from_name(self, username):
|
||||||
tenant_id = self.stack.context.tenant_id
|
tenant_id = self.context.tenant_id
|
||||||
users = self.keystone().users.list(tenant_id=tenant_id)
|
users = self.keystone().users.list(tenant_id=tenant_id)
|
||||||
for u in users:
|
for u in users:
|
||||||
if u.name == self.properties['UserName']:
|
if u.name == self.properties['UserName']:
|
||||||
|
@ -132,7 +132,7 @@ class AccessKey(Resource):
|
||||||
raise exception.NotFound('could not find user %s' %
|
raise exception.NotFound('could not find user %s' %
|
||||||
self.properties['UserName'])
|
self.properties['UserName'])
|
||||||
|
|
||||||
tenant_id = self.stack.context.tenant_id
|
tenant_id = self.context.tenant_id
|
||||||
cred = self.keystone().ec2.create(user.id, tenant_id)
|
cred = self.keystone().ec2.create(user.id, tenant_id)
|
||||||
self.instance_id_set(cred.access)
|
self.instance_id_set(cred.access)
|
||||||
self._secret = cred.secret
|
self._secret = cred.secret
|
||||||
|
|
|
@ -70,7 +70,6 @@ class WaitCondition(resources.Resource):
|
||||||
def handle_create(self):
|
def handle_create(self):
|
||||||
self._get_handle_resource_id()
|
self._get_handle_resource_id()
|
||||||
res_name = self.resource_id
|
res_name = self.resource_id
|
||||||
cntx = self.stack.context
|
|
||||||
|
|
||||||
# keep polling our Metadata to see if the cfn-signal has written
|
# keep polling our Metadata to see if the cfn-signal has written
|
||||||
# it yet. The execution here is limited by timeout.
|
# it yet. The execution here is limited by timeout.
|
||||||
|
@ -82,7 +81,7 @@ class WaitCondition(resources.Resource):
|
||||||
try:
|
try:
|
||||||
while status == 'WAITING':
|
while status == 'WAITING':
|
||||||
try:
|
try:
|
||||||
res = db_api.resource_get_by_name_and_stack(cntx,
|
res = db_api.resource_get_by_name_and_stack(self.context,
|
||||||
res_name,
|
res_name,
|
||||||
self.stack.id)
|
self.stack.id)
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
@ -125,7 +124,7 @@ class WaitCondition(resources.Resource):
|
||||||
res = None
|
res = None
|
||||||
if key == 'Data':
|
if key == 'Data':
|
||||||
try:
|
try:
|
||||||
r = db_api.resource_get(self.stack.context, self.id)
|
r = db_api.resource_get(self.context, self.id)
|
||||||
if r.rsrc_metadata and 'Data' in r.rsrc_metadata:
|
if r.rsrc_metadata and 'Data' in r.rsrc_metadata:
|
||||||
res = r.rsrc_metadata['Data']
|
res = r.rsrc_metadata['Data']
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|
Loading…
Reference in New Issue