Merge "Use default client in nova"

This commit is contained in:
Jenkins 2015-08-03 09:05:43 +00:00 committed by Gerrit Code Review
commit a41cc2f6f7
13 changed files with 74 additions and 67 deletions

View File

@ -71,6 +71,8 @@ class ElasticIp(resource.Resource):
),
}
default_client_name = 'nova'
def __init__(self, name, json_snippet, stack):
super(ElasticIp, self).__init__(name, json_snippet, stack)
self.ipaddress = None
@ -86,7 +88,7 @@ class ElasticIp(resource.Resource):
self.ipaddress = ips['floatingip']['floating_ip_address']
else:
try:
ips = self.nova().floating_ips.get(self.resource_id)
ips = self.client().floating_ips.get(self.resource_id)
except Exception as e:
self.client_plugin('nova').ignore_not_found(e)
else:
@ -107,7 +109,7 @@ class ElasticIp(resource.Resource):
LOG.info(_LI('ElasticIp create %s'), str(ips))
else:
try:
ips = self.nova().floating_ips.create()
ips = self.client().floating_ips.create()
except Exception as e:
with excutils.save_and_reraise_exception():
if self.client_plugin('nova').is_not_found(e):
@ -122,7 +124,7 @@ class ElasticIp(resource.Resource):
instance_id = self.properties[self.INSTANCE_ID]
if instance_id:
server = self.nova().servers.get(instance_id)
server = self.client().servers.get(instance_id)
server.add_floating_ip(self._ipaddress())
def handle_delete(self):
@ -135,7 +137,7 @@ class ElasticIp(resource.Resource):
instance_id = self.properties[self.INSTANCE_ID]
if instance_id:
try:
server = self.nova().servers.get(instance_id)
server = self.client().servers.get(instance_id)
if server:
server.remove_floating_ip(self._ipaddress())
except Exception as e:
@ -154,7 +156,7 @@ class ElasticIp(resource.Resource):
self.client_plugin('neutron').ignore_not_found(ex)
else:
try:
self.nova().floating_ips.delete(self.resource_id)
self.client().floating_ips.delete(self.resource_id)
except Exception as e:
self.client_plugin('nova').ignore_not_found(e)
@ -166,13 +168,13 @@ class ElasticIp(resource.Resource):
# no need to remove the floating ip from the old instance,
# nova does this automatically when calling
# add_floating_ip().
server = self.nova().servers.get(instance_id)
server = self.client().servers.get(instance_id)
server.add_floating_ip(self._ipaddress())
else:
# to remove the floating_ip from the old instance
instance_id_old = self.properties[self.INSTANCE_ID]
if instance_id_old:
server = self.nova().servers.get(instance_id_old)
server = self.client().servers.get(instance_id_old)
server.remove_floating_ip(self._ipaddress())
def FnGetRefId(self):
@ -223,6 +225,8 @@ class ElasticIpAssociation(resource.Resource):
),
}
default_client_name = 'nova'
def FnGetRefId(self):
return self.physical_resource_name_or_FnGetRefId()
@ -286,7 +290,7 @@ class ElasticIpAssociation(resource.Resource):
ignore_not_found=False):
server = None
try:
server = self.nova().servers.get(instance_id)
server = self.client().servers.get(instance_id)
server.remove_floating_ip(eip)
except Exception as e:
is_not_found = self.client_plugin('nova').is_not_found(e)
@ -349,7 +353,7 @@ class ElasticIpAssociation(resource.Resource):
# if update portInfo, no need to detach the port from
# old instance/floatingip.
if eip:
server = self.nova().servers.get(instance_id_update)
server = self.client().servers.get(instance_id_update)
server.add_floating_ip(eip)
else:
port_id, port_rsrc = self._get_port_info(ni_id_update,
@ -387,7 +391,8 @@ class ElasticIpAssociation(resource.Resource):
def handle_create(self):
"""Add a floating IP address to a server."""
if self.properties[self.EIP]:
server = self.nova().servers.get(self.properties[self.INSTANCE_ID])
server = self.client().servers.get(
self.properties[self.INSTANCE_ID])
server.add_floating_ip(self.properties[self.EIP])
self.resource_id_set(self.properties[self.EIP])
LOG.debug('ElasticIpAssociation '

View File

@ -381,7 +381,7 @@ class Instance(resource.Resource):
availability_zone = self.properties[self.AVAILABILITY_ZONE]
if availability_zone is None:
try:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
availability_zone = getattr(server,
'OS-EXT-AZ:availability_zone')
except Exception as e:
@ -558,7 +558,7 @@ class Instance(resource.Resource):
instance_user = 'ec2-user'
try:
server = self.nova().servers.create(
server = self.client().servers.create(
name=self.physical_resource_name(),
image=image_id,
flavor=flavor_id,
@ -637,7 +637,7 @@ class Instance(resource.Resource):
old_network_ifaces.remove(iface)
def handle_check(self):
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
if not self.client_plugin()._check_active(server, 'Instance'):
raise exception.Error(_("Instance is not ACTIVE (was: %s)") %
server.status.strip())
@ -648,7 +648,7 @@ class Instance(resource.Resource):
checkers = []
server = None
if self.TAGS in prop_diff:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
self.client_plugin().meta_update(
server, self._get_nova_metadata(prop_diff))
@ -656,7 +656,7 @@ class Instance(resource.Resource):
flavor = prop_diff[self.INSTANCE_TYPE]
flavor_id = self.client_plugin().get_flavor_id(flavor)
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
checker = scheduler.TaskRunner(self.client_plugin().resize,
server, flavor, flavor_id)
checkers.append(checker)
@ -668,7 +668,7 @@ class Instance(resource.Resource):
self.properties.get(self.SUBNET_ID))
security_groups = self._get_security_groups()
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
# if there is entrys in old_network_ifaces and new_network_ifaces,
# remove the same entrys from old and new ifaces
if old_network_ifaces and new_network_ifaces:
@ -806,7 +806,7 @@ class Instance(resource.Resource):
self.name)
try:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
except Exception as e:
if self.client_plugin().is_not_found(e):
raise exception.NotFound(_('Failed to find instance %s') %
@ -848,7 +848,7 @@ class Instance(resource.Resource):
self.name)
try:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
except Exception as e:
if self.client_plugin().is_not_found(e):
raise exception.NotFound(_('Failed to find instance %s') %

View File

@ -108,20 +108,20 @@ class NovaFlavor(resource.Resource):
args['is_public'] = False
flavor_keys = args.pop(self.EXTRA_SPECS)
flavor = self.nova().flavors.create(**args)
flavor = self.client().flavors.create(**args)
self.resource_id_set(flavor.id)
if flavor_keys:
flavor.set_keys(flavor_keys)
tenant = self.stack.context.tenant_id
# grant access to the active project and the admin project
self.nova().flavor_access.add_tenant_access(flavor, tenant)
self.nova().flavor_access.add_tenant_access(flavor, 'admin')
self.client().flavor_access.add_tenant_access(flavor, tenant)
self.client().flavor_access.add_tenant_access(flavor, 'admin')
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
"""Update nova flavor."""
if self.EXTRA_SPECS in prop_diff:
flavor = self.nova().flavors.get(self.resource_id)
flavor = self.client().flavors.get(self.resource_id)
old_keys = flavor.get_keys()
flavor.unset_keys(old_keys)
new_keys = prop_diff.get(self.EXTRA_SPECS)
@ -133,7 +133,7 @@ class NovaFlavor(resource.Resource):
return
try:
self.nova().flavors.delete(self.resource_id)
self.client().flavors.delete(self.resource_id)
except Exception as e:
self.client_plugin().ignore_not_found(e)

View File

@ -64,14 +64,15 @@ class NovaFloatingIp(resource.Resource):
def _get_resource(self):
if self._floating_ip is None and self.resource_id is not None:
self._floating_ip = self.nova().floating_ips.get(self.resource_id)
self._floating_ip = self.client().floating_ips.get(
self.resource_id)
return self._floating_ip
def handle_create(self):
try:
pool = self.properties[self.POOL]
floating_ip = self.nova().floating_ips.create(pool=pool)
floating_ip = self.client().floating_ips.create(pool=pool)
except Exception as e:
with excutils.save_and_reraise_exception():
if self.client_plugin().is_not_found(e):
@ -86,7 +87,7 @@ class NovaFloatingIp(resource.Resource):
def handle_delete(self):
if self.resource_id is not None:
try:
self.nova().floating_ips.delete(self.resource_id)
self.client().floating_ips.delete(self.resource_id)
except Exception as e:
self.client_plugin().ignore_not_found(e)
@ -132,10 +133,11 @@ class NovaFloatingIpAssociation(resource.Resource):
return self.physical_resource_name_or_FnGetRefId()
def handle_create(self):
server = self.nova().servers.get(self.properties[self.SERVER])
fl_ip = self.nova().floating_ips.get(self.properties[self.FLOATING_IP])
server = self.client().servers.get(self.properties[self.SERVER])
fl_ip = self.client().floating_ips.get(
self.properties[self.FLOATING_IP])
self.nova().servers.add_floating_ip(server, fl_ip.ip)
self.client().servers.add_floating_ip(server, fl_ip.ip)
self.resource_id_set(self.id)
def handle_delete(self):
@ -143,11 +145,11 @@ class NovaFloatingIpAssociation(resource.Resource):
return
try:
server = self.nova().servers.get(self.properties[self.SERVER])
server = self.client().servers.get(self.properties[self.SERVER])
if server:
fl_ip = self.nova().floating_ips.get(
fl_ip = self.client().floating_ips.get(
self.properties[self.FLOATING_IP])
self.nova().servers.remove_floating_ip(server, fl_ip.ip)
self.client().servers.remove_floating_ip(server, fl_ip.ip)
except Exception as e:
self.client_plugin().ignore_conflict_and_not_found(e)
@ -165,10 +167,10 @@ class NovaFloatingIpAssociation(resource.Resource):
self.properties[self.SERVER])
fl_ip_id = (prop_diff.get(self.FLOATING_IP) or
self.properties[self.FLOATING_IP])
server = self.nova().servers.get(server_id)
fl_ip = self.nova().floating_ips.get(fl_ip_id)
server = self.client().servers.get(server_id)
fl_ip = self.client().floating_ips.get(fl_ip_id)
self.nova().servers.add_floating_ip(server, fl_ip.ip)
self.client().servers.add_floating_ip(server, fl_ip.ip)
self.resource_id_set(self.id)

View File

@ -110,8 +110,8 @@ class KeyPair(resource.Resource):
def handle_create(self):
pub_key = self.properties[self.PUBLIC_KEY] or None
new_keypair = self.nova().keypairs.create(self.properties[self.NAME],
public_key=pub_key)
new_keypair = self.client().keypairs.create(self.properties[self.NAME],
public_key=pub_key)
if (self.properties[self.SAVE_PRIVATE_KEY] and
hasattr(new_keypair, 'private_key')):
self.data_set('private_key',
@ -122,12 +122,12 @@ class KeyPair(resource.Resource):
def handle_delete(self):
if self.resource_id:
try:
self.nova().keypairs.delete(self.resource_id)
self.client().keypairs.delete(self.resource_id)
except Exception as e:
self.client_plugin().ignore_not_found(e)
def handle_check(self):
self.nova().keypairs.get(self.resource_id)
self.client().keypairs.get(self.resource_id)
def _resolve_attribute(self, key):
attr_fn = {self.PRIVATE_KEY_ATTR: self.private_key,

View File

@ -54,14 +54,14 @@ class ServerGroup(resource.Resource):
def handle_create(self):
name = self.physical_resource_name()
policies = self.properties[self.POLICIES]
server_group = self.nova().server_groups.create(name=name,
policies=policies)
server_group = self.client().server_groups.create(name=name,
policies=policies)
self.resource_id_set(server_group.id)
def handle_delete(self):
if self.resource_id:
try:
self.nova().server_groups.delete(self.resource_id)
self.client().server_groups.delete(self.resource_id)
except Exception as e:
self.client_plugin().ignore_not_found(e)

View File

@ -735,7 +735,7 @@ class Server(stack_user.StackUser):
server = None
try:
server = self.nova().servers.create(
server = self.client().servers.create(
name=self._server_name(),
image=image,
flavor=flavor_id,
@ -920,7 +920,7 @@ class Server(stack_user.StackUser):
if name == self.NAME_ATTR:
return self._server_name()
try:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
except Exception as e:
self.client_plugin().ignore_not_found(e)
return ''
@ -1044,7 +1044,7 @@ class Server(stack_user.StackUser):
flavor_id = self.client_plugin().get_flavor_id(flavor)
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
return scheduler.TaskRunner(self.client_plugin().resize,
server, flavor, flavor_id)
@ -1057,7 +1057,7 @@ class Server(stack_user.StackUser):
image = prop_diff[self.IMAGE]
image_id = self.client_plugin('glance').get_image_id(image)
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
preserve_ephemeral = (
image_update_policy == 'REBUILD_PRESERVE_EPHEMERAL')
password = (prop_diff.get(self.ADMIN_PASS) or
@ -1077,7 +1077,7 @@ class Server(stack_user.StackUser):
old_networks = self.properties[self.NETWORKS]
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
interfaces = server.interface_list()
# if old networks is None, it means that the server got first
@ -1148,7 +1148,7 @@ class Server(stack_user.StackUser):
server = None
if self.METADATA in prop_diff:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
self.client_plugin().meta_update(server,
prop_diff[self.METADATA])
@ -1159,12 +1159,12 @@ class Server(stack_user.StackUser):
checkers.append(self._update_image(server, prop_diff))
elif self.ADMIN_PASS in prop_diff:
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
server.change_password(prop_diff[self.ADMIN_PASS])
if self.NAME in prop_diff:
if not server:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
self.client_plugin().rename(server, prop_diff[self.NAME])
if self.NETWORKS in prop_diff:
@ -1438,7 +1438,7 @@ class Server(stack_user.StackUser):
self.name)
try:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
except Exception as e:
if self.client_plugin().is_not_found(e):
raise exception.NotFound(_('Failed to find server %s') %
@ -1480,7 +1480,7 @@ class Server(stack_user.StackUser):
self.name)
try:
server = self.nova().servers.get(self.resource_id)
server = self.client().servers.get(self.resource_id)
except Exception as e:
if self.client_plugin().is_not_found(e):
raise exception.NotFound(_('Failed to find server %s') %
@ -1499,13 +1499,13 @@ class Server(stack_user.StackUser):
return self.client_plugin()._check_active(server_id)
def handle_snapshot(self):
image_id = self.nova().servers.create_image(
image_id = self.client().servers.create_image(
self.resource_id, self.physical_resource_name())
self.data_set('snapshot_image_id', image_id)
return image_id
def check_snapshot_complete(self, image_id):
image = self.nova().images.get(image_id)
image = self.client().images.get(image_id)
if image.status == 'ACTIVE':
return True
elif image.status == 'ERROR' or image.status == 'DELETED':
@ -1516,7 +1516,7 @@ class Server(stack_user.StackUser):
def handle_delete_snapshot(self, snapshot):
image_id = snapshot['resource_data'].get('snapshot_image_id')
try:
self.nova().images.delete(image_id)
self.client().images.delete(image_id)
except Exception as e:
self.client_plugin().ignore_not_found(e)

View File

@ -479,7 +479,7 @@ class InstancesTest(common.HeatTestCase):
instance = instances.Instance('instance_create_image',
res_definitions['WebServer'], stack)
instance.nova = mock.Mock()
instance.client = mock.Mock()
self.patchobject(nova.NovaClientPlugin, '_check_active',
return_value=True)
@ -491,8 +491,8 @@ class InstancesTest(common.HeatTestCase):
instance = instances.Instance('instance_create_image',
res_definitions['WebServer'], stack)
instance.nova = mock.Mock()
instance.nova.return_value.servers.get.return_value.status = 'foo'
instance.client = mock.Mock()
instance.client.return_value.servers.get.return_value.status = 'foo'
self.patchobject(nova.NovaClientPlugin, '_check_active',
return_value=False)

View File

@ -115,8 +115,8 @@ class SqlAlchemyTest(common.HeatTestCase):
def _mock_create(self, mocks):
fc = fakes_nova.FakeClient()
mocks.StubOutWithMock(instances.Instance, 'nova')
instances.Instance.nova().MultipleTimes().AndReturn(fc)
mocks.StubOutWithMock(instances.Instance, 'client')
instances.Instance.client().MultipleTimes().AndReturn(fc)
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
nova.NovaClientPlugin._create().AndReturn(self.fc)
self._mock_get_image_id_success('F17-x86_64-gold', 744)

View File

@ -118,8 +118,8 @@ def setup_mock_for_image_constraint(mocks, imageId_input,
def setup_mocks(mocks, stack, mock_image_constraint=True,
mock_keystone=True):
fc = fakes_nova.FakeClient()
mocks.StubOutWithMock(instances.Instance, 'nova')
instances.Instance.nova().MultipleTimes().AndReturn(fc)
mocks.StubOutWithMock(instances.Instance, 'client')
instances.Instance.client().MultipleTimes().AndReturn(fc)
mocks.StubOutWithMock(nova.NovaClientPlugin, '_create')
nova.NovaClientPlugin._create().AndReturn(fc)
instance = stack['WebServer']

View File

@ -53,7 +53,7 @@ class NovaFlavorTest(common.HeatTestCase):
self.my_flavor = self.stack['my_flavor']
nova = mock.MagicMock()
self.novaclient = mock.MagicMock()
self.my_flavor.nova = nova
self.my_flavor.client = nova
nova.return_value = self.novaclient
self.flavors = self.novaclient.flavors

View File

@ -139,14 +139,14 @@ class NovaKeyPairTest(common.HeatTestCase):
def test_check_key(self):
res = self._get_test_resource(self.kp_template)
res.nova = mock.Mock()
res.client = mock.Mock()
scheduler.TaskRunner(res.check)()
self.assertEqual((res.CHECK, res.COMPLETE), res.state)
def test_check_key_fail(self):
res = self._get_test_resource(self.kp_template)
res.nova = mock.Mock()
res.nova().keypairs.get.side_effect = Exception("boom")
res.client = mock.Mock()
res.client().keypairs.get.side_effect = Exception("boom")
exc = self.assertRaises(exception.ResourceFailure,
scheduler.TaskRunner(res.check))
self.assertIn("boom", six.text_type(exc))

View File

@ -51,7 +51,7 @@ class NovaServerGroupTest(common.HeatTestCase):
self.sg = self.stack['ServerGroup']
# create mock clients and objects
nova = mock.MagicMock()
self.sg.nova = mock.MagicMock(return_value=nova)
self.sg.client = mock.MagicMock(return_value=nova)
self.sg_mgr = nova.server_groups
def _create_sg(self, name):