Make sure default_client_name declared for required resources

Adds default_client_name attribute to those resource plugin
which does not explicitly declare it.

implements blueprint keystone-based-resource-availability

Change-Id: I727b71496e1ecc4ac4289d94860ba341dcd522d8
This commit is contained in:
Kanagaraj Manickam 2015-06-12 19:56:33 +05:30
parent 41159da614
commit 055915e2f1
15 changed files with 55 additions and 43 deletions

View File

@ -26,6 +26,8 @@ class Order(resource.Resource):
support_status = support.SupportStatus(version='2014.2')
default_client_name = 'barbican'
PROPERTIES = (
NAME, PAYLOAD_CONTENT_TYPE, MODE, EXPIRATION,
ALGORITHM, BIT_LENGTH, TYPE, REQUEST_TYPE, SUBJECT_DN,
@ -144,7 +146,7 @@ class Order(resource.Resource):
}
def barbican(self):
return self.client('barbican')
return self.client()
def handle_create(self):
info = dict((k, v) for k, v in self.properties.items()

View File

@ -25,6 +25,8 @@ class Secret(resource.Resource):
support_status = support.SupportStatus(version='2014.2')
default_client_name = 'barbican'
PROPERTIES = (
NAME, PAYLOAD, PAYLOAD_CONTENT_TYPE, PAYLOAD_CONTENT_ENCODING,
MODE, EXPIRATION, ALGORITHM, BIT_LENGTH,
@ -104,7 +106,7 @@ class Secret(resource.Resource):
}
def barbican(self):
return self.client('barbican')
return self.client()
def handle_create(self):
info = dict(self.properties)

View File

@ -43,6 +43,8 @@ class CinderVolumeType(resource.Resource):
support_status = support.SupportStatus(version='2015.1')
default_client_name = 'cinder'
PROPERTIES = (
NAME, METADATA, IS_PUBLIC, DESCRIPTION,
) = (
@ -115,7 +117,7 @@ class CinderVolumeType(resource.Resource):
try:
self.cinder().volume_types.delete(self.resource_id)
except Exception as e:
self.client_plugin('cinder').ignore_not_found(e)
self.client_plugin().ignore_not_found(e)
def resource_mapping():

View File

@ -35,6 +35,7 @@ class RemoteStack(resource.Resource):
A Resource representing a stack which can be created using specified
context.
"""
default_client_name = 'heat'
PROPERTIES = (
CONTEXT, TEMPLATE, TIMEOUT, PARAMETERS,
@ -120,11 +121,11 @@ class RemoteStack(resource.Resource):
def heat(self):
# A convenience method overriding Resource.heat()
return self._context().clients.client("heat")
return self._context().clients.client(self.default_client_name)
def client_plugin(self):
# A convenience method overriding Resource.client_plugin()
return self._context().clients.client_plugin('heat')
return self._context().clients.client_plugin(self.default_client_name)
def validate(self):
super(RemoteStack, self).validate()

View File

@ -25,6 +25,8 @@ class KeystoneEndpoint(resource.Resource):
version='2015.2',
message=_('Supported versions: keystone v3'))
default_client_name = 'keystone'
PROPERTIES = (
NAME, REGION, SERVICE, INTERFACE, SERVICE_URL
) = (
@ -142,7 +144,7 @@ class KeystoneEndpoint(resource.Resource):
try:
self._delete_endpoint(endpoint_id=self.resource_id)
except Exception as ex:
self.client_plugin('keystone').ignore_not_found(ex)
self.client_plugin().ignore_not_found(ex)
def resource_mapping():

View File

@ -60,8 +60,7 @@ class KeystoneGroup(role_assignments.KeystoneRoleAssignment):
group_name,
description,
domain):
domain = (self.client_plugin('keystone').
get_domain_id(domain))
domain = self.client_plugin().get_domain_id(domain)
return self.keystone().client.groups.create(
name=group_name,
@ -84,8 +83,7 @@ class KeystoneGroup(role_assignments.KeystoneRoleAssignment):
values['description'] = new_description
values['group'] = group_id
domain = (self.client_plugin('keystone').
get_domain_id(domain))
domain = self.client_plugin().get_domain_id(domain)
values['domain_id'] = domain
return self.keystone().client.groups.update(**values)
@ -132,7 +130,7 @@ class KeystoneGroup(role_assignments.KeystoneRoleAssignment):
self._delete_group(group_id=self.resource_id)
except Exception as ex:
self.client_plugin('keystone').ignore_not_found(ex)
self.client_plugin().ignore_not_found(ex)
def resource_mapping():

View File

@ -25,6 +25,8 @@ class KeystoneProject(resource.Resource):
version='2015.1',
message=_('Supported versions: keystone v3'))
default_client_name = 'keystone'
PROPERTIES = (
NAME, DOMAIN, DESCRIPTION, ENABLED
) = (
@ -63,8 +65,7 @@ class KeystoneProject(resource.Resource):
description,
domain,
enabled):
domain = (self.client_plugin('keystone').
get_domain_id(domain))
domain = self.client_plugin().get_domain_id(domain)
return self.keystone().client.projects.create(
name=project_name,
@ -91,8 +92,7 @@ class KeystoneProject(resource.Resource):
values['enabled'] = enabled
values['project'] = project_id
domain = (self.client_plugin('keystone').
get_domain_id(domain))
domain = self.client_plugin().get_domain_id(domain)
values['domain'] = domain
@ -137,7 +137,7 @@ class KeystoneProject(resource.Resource):
try:
self._delete_project(project_id=self.resource_id)
except Exception as ex:
self.client_plugin('keystone').ignore_not_found(ex)
self.client_plugin().ignore_not_found(ex)
def resource_mapping():

View File

@ -24,6 +24,8 @@ class KeystoneRole(resource.Resource):
version='2015.1',
message=_('Supported versions: keystone v3'))
default_client_name = 'keystone'
PROPERTIES = (
NAME
) = (
@ -73,7 +75,7 @@ class KeystoneRole(resource.Resource):
try:
self._delete_role(role_id=self.resource_id)
except Exception as ex:
self.client_plugin('keystone').ignore_not_found(ex)
self.client_plugin().ignore_not_found(ex)
def resource_mapping():

View File

@ -54,6 +54,8 @@ class KeystoneRoleAssignment(resource.Resource):
version='2015.1',
message=_('Supported versions: keystone v3'))
default_client_name = 'keystone'
PROPERTIES = (
ROLES
) = (
@ -170,11 +172,10 @@ class KeystoneRoleAssignment(resource.Resource):
domain = role_assignment.get(self.DOMAIN)
role_assignments.append({
self.ROLE: (self.client_plugin('keystone').
get_role_id(role)),
self.PROJECT: (self.client_plugin('keystone').
self.ROLE: self.client_plugin().get_role_id(role),
self.PROJECT: (self.client_plugin().
get_project_id(project)) if project else None,
self.DOMAIN: (self.client_plugin('keystone').
self.DOMAIN: (self.client_plugin().
get_domain_id(domain)) if domain else None
})
return role_assignments

View File

@ -24,6 +24,8 @@ class KeystoneService(resource.Resource):
version='2015.2',
message=_('Supported versions: keystone v3'))
default_client_name = 'keystone'
PROPERTIES = (
NAME, DESCRIPTION, TYPE
) = (
@ -109,7 +111,7 @@ class KeystoneService(resource.Resource):
try:
self._delete_service(service_id=self.resource_id)
except Exception as ex:
self.client_plugin('keystone').ignore_not_found(ex)
self.client_plugin().ignore_not_found(ex)
def resource_mapping():

View File

@ -98,10 +98,9 @@ class KeystoneUser(role_assignments.KeystoneRoleAssignment):
enabled=None,
email=None,
password=None):
domain = (self.client_plugin('keystone').
get_domain_id(domain))
domain = (self.client_plugin().get_domain_id(domain))
if default_project:
default_project = (self.client_plugin('keystone').
default_project = (self.client_plugin().
get_project_id(default_project))
return self.keystone().client.users.create(
@ -141,8 +140,7 @@ class KeystoneUser(role_assignments.KeystoneRoleAssignment):
values['enabled'] = enabled
values['user'] = user_id
domain = (self.client_plugin('keystone').
get_domain_id(domain))
domain = (self.client_plugin().get_domain_id(domain))
values['domain'] = domain
@ -150,8 +148,7 @@ class KeystoneUser(role_assignments.KeystoneRoleAssignment):
def _add_user_to_groups(self, user_id, groups):
if groups is not None:
group_ids = [(self.client_plugin('keystone').
get_group_id(group))
group_ids = [self.client_plugin().get_group_id(group)
for group in groups]
for group_id in group_ids:
@ -160,8 +157,7 @@ class KeystoneUser(role_assignments.KeystoneRoleAssignment):
def _remove_user_from_groups(self, user_id, groups):
if groups is not None:
group_ids = [(self.client_plugin('keystone').
get_group_id(group))
group_ids = [self.client_plugin().get_group_id(group)
for group in groups]
for group_id in group_ids:
@ -169,14 +165,12 @@ class KeystoneUser(role_assignments.KeystoneRoleAssignment):
group_id)
def _find_diff(self, updated_prps, stored_prps):
new_group_ids = [(self.client_plugin('keystone').
get_group_id(group))
new_group_ids = [self.client_plugin().get_group_id(group)
for group in
(set(updated_prps or []) -
set(stored_prps or []))]
removed_group_ids = [(self.client_plugin('keystone').
get_group_id(group))
removed_group_ids = [self.client_plugin().get_group_id(group)
for group in
(set(stored_prps or [])
- set(updated_prps or []))]
@ -257,14 +251,13 @@ class KeystoneUser(role_assignments.KeystoneRoleAssignment):
if self._stored_properties_data[self.GROUPS] is not None:
self._remove_user_from_groups(
self.resource_id,
[(self.client_plugin('keystone').
get_group_id(group))
[self.client_plugin().get_group_id(group)
for group in
self._stored_properties_data[self.GROUPS]])
self._delete_user(user_id=self.resource_id)
except Exception as ex:
self.client_plugin('keystone').ignore_not_found(ex)
self.client_plugin().ignore_not_found(ex)
def resource_mapping():

View File

@ -130,7 +130,7 @@ def resource_mapping():
def available_resource_mapping():
if not clients.has_client('mistral'):
if not clients.has_client(CronTrigger.default_client_name):
return {}
return resource_mapping()

View File

@ -28,8 +28,11 @@ from heat.engine import support
class Workflow(signal_responder.SignalResponder,
resource.Resource):
support_status = support.SupportStatus(version='2015.1')
default_client_name = 'mistral'
PROPERTIES = (
NAME, TYPE, DESCRIPTION, INPUT, OUTPUT, TASKS, PARAMS
) = (
@ -183,7 +186,7 @@ class Workflow(signal_responder.SignalResponder,
}
def mistral(self):
return self.client('mistral')
return self.client()
def FnGetRefId(self):
return self._workflow_name()
@ -415,7 +418,7 @@ def resource_mapping():
def available_resource_mapping():
if not clients.has_client('mistral'):
if not clients.has_client(Workflow.default_client_name):
return {}
return resource_mapping()

View File

@ -47,6 +47,8 @@ class NovaFlavor(resource.Resource):
support_status = support.SupportStatus(version='2014.2')
default_client_name = 'nova'
PROPERTIES = (
RAM, VCPUS, DISK, SWAP, EPHEMERAL,
RXTX_FACTOR, EXTRA_SPECS,
@ -133,7 +135,7 @@ class NovaFlavor(resource.Resource):
try:
self.nova().flavors.delete(self.resource_id)
except Exception as e:
self.client_plugin('nova').ignore_not_found(e)
self.client_plugin().ignore_not_found(e)
def resource_mapping():

View File

@ -24,6 +24,8 @@ class ServerGroup(resource.Resource):
support_status = support.SupportStatus(version='2014.2')
default_client_name = 'nova'
PROPERTIES = (
NAME, POLICIES
) = (
@ -61,7 +63,7 @@ class ServerGroup(resource.Resource):
try:
self.nova().server_groups.delete(self.resource_id)
except Exception as e:
self.client_plugin('nova').ignore_not_found(e)
self.client_plugin().ignore_not_found(e)
def physical_resource_name(self):
name = self.properties[self.NAME]