Implement nova client plugin
This moves the client creation code out of Clients._nova() into its own client plugin. Raising nova exceptions has been moved to heat.tests.v1_1.fakes.fake_exception since it is actually impossible to directly create a nova exception object which works on both novaclient 2.17 and (yet to be released) 2.18. nova.exceptions.from_response is stable across novaclient releases so all test exceptions are now raised using from_response. Change-Id: Id68ff32c381c9c8c06f3712736d1888d1d0e8110
This commit is contained in:
parent
55ab8bdade
commit
9850832da5
@ -12,7 +12,6 @@
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
from novaclient.exceptions import NotFound
|
||||
|
||||
from heat.engine import parser
|
||||
from heat.engine import resource
|
||||
@ -22,6 +21,7 @@ from heat.tests import utils
|
||||
|
||||
from ..resources.nova_flavor import NovaFlavor # noqa
|
||||
from ..resources.nova_flavor import resource_mapping # noqa
|
||||
from heat.tests.v1_1 import fakes
|
||||
|
||||
flavor_template = {
|
||||
'heat_template_version': '2013-05-23',
|
||||
@ -98,5 +98,5 @@ class NovaFlavorTest(HeatTestCase):
|
||||
self.my_flavor.resource_id = flavor_id
|
||||
self.flavors.delete.return_value = None
|
||||
self.assertIsNone(self.my_flavor.handle_delete())
|
||||
self.flavors.delete.side_effect = NotFound(404, "Not found")
|
||||
self.flavors.delete.side_effect = fakes.fake_exception()
|
||||
self.assertIsNone(self.my_flavor.handle_delete())
|
||||
|
@ -17,6 +17,7 @@ import mox
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
from heat.engine import resource
|
||||
@ -77,10 +78,8 @@ class CloudServersTest(HeatTestCase):
|
||||
|
||||
def _stub_server_validate(self, server, imageId_input, image_id):
|
||||
# stub nova validate
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
# stub glance image validate
|
||||
self._mock_get_image_id_success(imageId_input, image_id)
|
||||
@ -146,10 +145,6 @@ class CloudServersTest(HeatTestCase):
|
||||
scheduler.TaskRunner(server.create)()
|
||||
return server
|
||||
|
||||
def _update_test_server(self, return_server, name, exit_code=0):
|
||||
self.m.StubOutWithMock(cloud_server.CloudServer, "nova")
|
||||
cloud_server.CloudServer.nova().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
def _mock_metadata_os_distro(self):
|
||||
image_data = mock.Mock(metadata={'os_distro': 'centos'})
|
||||
self.fc.images.get = mock.Mock(return_value=image_data)
|
||||
@ -324,11 +319,11 @@ class CloudServersTest(HeatTestCase):
|
||||
self.assertEqual('Error: Unknown Managed Cloud automation status: FOO',
|
||||
str(exc))
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
@mock.patch.object(resource.Resource, 'data_set')
|
||||
def test_create_store_admin_pass_resource_data(self,
|
||||
mock_data_set,
|
||||
mock_nova):
|
||||
mock_create):
|
||||
self._mock_metadata_os_distro()
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.adminPass = 'autogenerated'
|
||||
@ -340,7 +335,7 @@ class CloudServersTest(HeatTestCase):
|
||||
server = cloud_server.CloudServer('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
mock_nova.return_value = self.fc
|
||||
mock_create.return_value = self.fc
|
||||
self.fc.servers.create = mock.Mock(return_value=return_server)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 'image_id')
|
||||
scheduler.TaskRunner(server.create)()
|
||||
@ -348,11 +343,11 @@ class CloudServersTest(HeatTestCase):
|
||||
'autogenerated', redact=True)
|
||||
self.assertIn(expected_call, mock_data_set.call_args_list)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
@mock.patch.object(resource.Resource, 'data_set')
|
||||
def test_create_save_admin_pass_is_false(self,
|
||||
mock_data_set,
|
||||
mock_nova):
|
||||
mock_create):
|
||||
self._mock_metadata_os_distro()
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.adminPass = 'autogenerated'
|
||||
@ -364,7 +359,7 @@ class CloudServersTest(HeatTestCase):
|
||||
server = cloud_server.CloudServer('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
mock_nova.return_value = self.fc
|
||||
mock_create.return_value = self.fc
|
||||
self.fc.servers.create = mock.Mock(return_value=return_server)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 'image_id')
|
||||
scheduler.TaskRunner(server.create)()
|
||||
@ -372,11 +367,11 @@ class CloudServersTest(HeatTestCase):
|
||||
mock.ANY, mock.ANY)
|
||||
self.assertNotIn(expected_call, mock_data_set.call_args_list)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
@mock.patch.object(resource.Resource, 'data_set')
|
||||
def test_create_save_admin_pass_defaults_to_false(self,
|
||||
mock_data_set,
|
||||
mock_nova):
|
||||
mock_create):
|
||||
self._mock_metadata_os_distro()
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.adminPass = 'autogenerated'
|
||||
@ -388,7 +383,7 @@ class CloudServersTest(HeatTestCase):
|
||||
server = cloud_server.CloudServer('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
mock_nova.return_value = self.fc
|
||||
mock_create.return_value = self.fc
|
||||
self.fc.servers.create = mock.Mock(return_value=return_server)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 'image_id')
|
||||
scheduler.TaskRunner(server.create)()
|
||||
@ -396,11 +391,11 @@ class CloudServersTest(HeatTestCase):
|
||||
mock.ANY, mock.ANY)
|
||||
self.assertNotIn(expected_call, mock_data_set.call_args_list)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
@mock.patch.object(resource.Resource, 'data_set')
|
||||
def test_create_without_adminPass_attribute(self,
|
||||
mock_data_set,
|
||||
mock_nova):
|
||||
mock_create):
|
||||
self._mock_metadata_os_distro()
|
||||
return_server = self.fc.servers.list()[1]
|
||||
stack_name = 'admin_pass_s'
|
||||
@ -410,7 +405,7 @@ class CloudServersTest(HeatTestCase):
|
||||
server = cloud_server.CloudServer('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
mock_nova.return_value = self.fc
|
||||
mock_create.return_value = self.fc
|
||||
self.fc.servers.create = mock.Mock(return_value=return_server)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 'image_id')
|
||||
scheduler.TaskRunner(server.create)()
|
||||
@ -440,9 +435,9 @@ class CloudServersTest(HeatTestCase):
|
||||
resource_defns['WebServer'], stack)
|
||||
self.assertEqual('foo', server.FnGetAtt('admin_pass'))
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
def _test_server_config_drive(self, user_data, config_drive, result,
|
||||
mock_nova):
|
||||
mock_create):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
stack_name = 'no_user_data'
|
||||
(tmpl, stack) = self._setup_test_stack(stack_name)
|
||||
@ -452,7 +447,7 @@ class CloudServersTest(HeatTestCase):
|
||||
resource_defns = tmpl.resource_definitions(stack)
|
||||
server = cloud_server.CloudServer('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
mock_nova.return_value = self.fc
|
||||
mock_create.return_value = self.fc
|
||||
mock_servers_create = mock.Mock(return_value=return_server)
|
||||
self.fc.servers.create = mock_servers_create
|
||||
image_id = mock.ANY
|
||||
|
@ -16,8 +16,6 @@ from cinderclient import client as cinderclient
|
||||
from glanceclient import client as glanceclient
|
||||
from heatclient import client as heatclient
|
||||
from neutronclient.v2_0 import client as neutronclient
|
||||
from novaclient import client as novaclient
|
||||
from novaclient import shell as novashell
|
||||
from oslo.config import cfg
|
||||
from stevedore import extension
|
||||
from swiftclient import client as swiftclient
|
||||
@ -101,35 +99,6 @@ class OpenStackClients(object):
|
||||
'Replace with calls to client("nova")')
|
||||
return self.client('nova')
|
||||
|
||||
def _nova(self):
|
||||
con = self.context
|
||||
computeshell = novashell.OpenStackComputeShell()
|
||||
extensions = computeshell._discover_extensions("1.1")
|
||||
|
||||
endpoint_type = self._get_client_option('nova', 'endpoint_type')
|
||||
args = {
|
||||
'project_id': con.tenant,
|
||||
'auth_url': con.auth_url,
|
||||
'service_type': 'compute',
|
||||
'username': None,
|
||||
'api_key': None,
|
||||
'extensions': extensions,
|
||||
'endpoint_type': endpoint_type,
|
||||
'http_log_debug': self._get_client_option('nova',
|
||||
'http_log_debug'),
|
||||
'cacert': self._get_client_option('nova', 'ca_file'),
|
||||
'insecure': self._get_client_option('nova', 'insecure')
|
||||
}
|
||||
|
||||
client = novaclient.Client(1.1, **args)
|
||||
|
||||
management_url = self.url_for(service_type='compute',
|
||||
endpoint_type=endpoint_type)
|
||||
client.client.auth_token = self.auth_token
|
||||
client.client.management_url = management_url
|
||||
|
||||
return client
|
||||
|
||||
def swift(self):
|
||||
warnings.warn('swift() is deprecated. '
|
||||
'Replace with calls to client("swift")')
|
||||
|
0
heat/engine/clients/os/__init__.py
Normal file
0
heat/engine/clients/os/__init__.py
Normal file
48
heat/engine/clients/os/nova.py
Normal file
48
heat/engine/clients/os/nova.py
Normal file
@ -0,0 +1,48 @@
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from novaclient import client as nc
|
||||
from novaclient import shell as novashell
|
||||
|
||||
from heat.engine.clients import client_plugin
|
||||
|
||||
|
||||
class NovaClientPlugin(client_plugin.ClientPlugin):
|
||||
|
||||
def _create(self):
|
||||
computeshell = novashell.OpenStackComputeShell()
|
||||
extensions = computeshell._discover_extensions("1.1")
|
||||
|
||||
endpoint_type = self._get_client_option('nova', 'endpoint_type')
|
||||
args = {
|
||||
'project_id': self.context.tenant,
|
||||
'auth_url': self.context.auth_url,
|
||||
'service_type': 'compute',
|
||||
'username': None,
|
||||
'api_key': None,
|
||||
'extensions': extensions,
|
||||
'endpoint_type': endpoint_type,
|
||||
'http_log_debug': self._get_client_option('nova',
|
||||
'http_log_debug'),
|
||||
'cacert': self._get_client_option('nova', 'ca_file'),
|
||||
'insecure': self._get_client_option('nova', 'insecure')
|
||||
}
|
||||
|
||||
client = nc.Client(1.1, **args)
|
||||
|
||||
management_url = self.url_for(service_type='compute',
|
||||
endpoint_type=endpoint_type)
|
||||
client.client.auth_token = self.auth_token
|
||||
client.client.management_url = management_url
|
||||
|
||||
return client
|
@ -11,6 +11,8 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import attributes
|
||||
from heat.engine import clients
|
||||
@ -79,7 +81,7 @@ class ElasticIp(resource.Resource):
|
||||
else:
|
||||
try:
|
||||
ips = self.nova().floating_ips.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound as ex:
|
||||
except nova_exceptions.NotFound as ex:
|
||||
LOG.warn(_("Floating IPs not found: %s") % ex)
|
||||
else:
|
||||
self.ipaddress = ips.ip
|
||||
@ -105,7 +107,7 @@ class ElasticIp(resource.Resource):
|
||||
% self.name)
|
||||
try:
|
||||
ips = self.nova().floating_ips.create()
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
with excutils.save_and_reraise_exception():
|
||||
msg = _("No default floating IP pool configured. "
|
||||
"Set 'default_floating_pool' in nova.conf.")
|
||||
@ -128,7 +130,7 @@ class ElasticIp(resource.Resource):
|
||||
server = self.nova().servers.get(instance_id)
|
||||
if server:
|
||||
server.remove_floating_ip(self._ipaddress())
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
|
||||
"""De-allocate a floating IP."""
|
||||
@ -143,7 +145,7 @@ class ElasticIp(resource.Resource):
|
||||
else:
|
||||
try:
|
||||
self.nova().floating_ips.delete(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
|
||||
def FnGetRefId(self):
|
||||
@ -246,7 +248,7 @@ class ElasticIpAssociation(resource.Resource):
|
||||
server = self.nova().servers.get(instance_id)
|
||||
if server:
|
||||
server.remove_floating_ip(self.properties[self.EIP])
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
elif self.properties[self.ALLOCATION_ID]:
|
||||
float_id = self.properties[self.ALLOCATION_ID]
|
||||
|
@ -12,13 +12,12 @@
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
from oslo.config import cfg
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import attributes
|
||||
from heat.engine import clients
|
||||
from heat.engine import constraints
|
||||
from heat.engine import properties
|
||||
from heat.engine import resource
|
||||
@ -694,7 +693,7 @@ class Instance(resource.Resource):
|
||||
nova_utils.refresh_server(server)
|
||||
if server.status == "DELETED":
|
||||
break
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
break
|
||||
self.resource_id_set(None)
|
||||
|
||||
@ -717,7 +716,7 @@ class Instance(resource.Resource):
|
||||
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
self.resource_id_set(None)
|
||||
return
|
||||
|
||||
@ -745,7 +744,7 @@ class Instance(resource.Resource):
|
||||
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
raise exception.NotFound(_('Failed to find instance %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
@ -800,7 +799,7 @@ class Instance(resource.Resource):
|
||||
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
raise exception.NotFound(_('Failed to find instance %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
|
@ -11,8 +11,9 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.engine import attributes
|
||||
from heat.engine import clients
|
||||
from heat.engine import properties
|
||||
from heat.engine import resource
|
||||
from heat.openstack.common import excutils
|
||||
@ -62,7 +63,7 @@ class NovaFloatingIp(resource.Resource):
|
||||
try:
|
||||
pool = self.properties.get(self.POOL)
|
||||
floating_ip = self.nova().floating_ips.create(pool=pool)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
with excutils.save_and_reraise_exception():
|
||||
if pool is None:
|
||||
msg = _('Could not allocate floating IP. Probably there '
|
||||
@ -76,7 +77,7 @@ class NovaFloatingIp(resource.Resource):
|
||||
if self.resource_id is not None:
|
||||
try:
|
||||
self.nova().floating_ips.delete(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
|
||||
def _resolve_attribute(self, key):
|
||||
@ -130,7 +131,7 @@ class NovaFloatingIpAssociation(resource.Resource):
|
||||
fl_ip = self.nova().floating_ips.\
|
||||
get(self.properties[self.FLOATING_IP])
|
||||
self.nova().servers.remove_floating_ip(server, fl_ip.ip)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
|
||||
def handle_update(self, json_snippet, tmpl_diff, prop_diff):
|
||||
|
@ -16,17 +16,16 @@ import email
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.text import MIMEText
|
||||
import json
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
import os
|
||||
import pkgutil
|
||||
import string
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
from oslo.config import cfg
|
||||
import six
|
||||
from six.moves.urllib import parse as urlparse
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import clients
|
||||
from heat.engine import scheduler
|
||||
from heat.openstack.common.gettextutils import _
|
||||
from heat.openstack.common import log as logging
|
||||
@ -52,15 +51,16 @@ def refresh_server(server):
|
||||
'''
|
||||
try:
|
||||
server.get()
|
||||
except clients.novaclient.exceptions.OverLimit as exc:
|
||||
except nova_exceptions.OverLimit as exc:
|
||||
msg = _("Server %(name)s (%(id)s) received an OverLimit "
|
||||
"response during server.get(): %(exception)s")
|
||||
LOG.warning(msg % {'name': server.name,
|
||||
'id': server.id,
|
||||
'exception': exc})
|
||||
except clients.novaclient.exceptions.ClientException as exc:
|
||||
if ((getattr(exc, 'http_status', getattr(exc, 'code', None)) in
|
||||
(500, 503))):
|
||||
except nova_exceptions.ClientException as exc:
|
||||
http_status = (getattr(exc, 'http_status', None) or
|
||||
getattr(exc, 'code', None))
|
||||
if http_status in (500, 503):
|
||||
msg = _('Server "%(name)s" (%(id)s) received the following '
|
||||
'exception during server.get(): %(exception)s')
|
||||
LOG.warning(msg % {'name': server.name,
|
||||
@ -248,7 +248,7 @@ def delete_server(server):
|
||||
|
||||
try:
|
||||
refresh_server(server)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
break
|
||||
|
||||
|
||||
@ -330,7 +330,7 @@ def server_to_ipaddress(client, server):
|
||||
'''
|
||||
try:
|
||||
server = client.servers.get(server)
|
||||
except clients.novaclient.exceptions.NotFound as ex:
|
||||
except nova_exceptions.NotFound as ex:
|
||||
LOG.warn(_('Instance (%(server)s) not found: %(ex)s')
|
||||
% {'server': server, 'ex': ex})
|
||||
else:
|
||||
|
@ -11,6 +11,9 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
import six
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import clients
|
||||
from heat.engine import properties
|
||||
@ -204,8 +207,8 @@ class SecurityGroup(resource.Resource):
|
||||
i.get(self.RULE_TO_PORT),
|
||||
i.get(self.RULE_CIDR_IP),
|
||||
source_group_id)
|
||||
except clients.novaclient.exceptions.BadRequest as ex:
|
||||
if ex.message.find('already exists') >= 0:
|
||||
except nova_exceptions.BadRequest as ex:
|
||||
if six.text_type(ex).find('already exists') >= 0:
|
||||
# no worries, the rule is already there
|
||||
pass
|
||||
else:
|
||||
@ -222,13 +225,13 @@ class SecurityGroup(resource.Resource):
|
||||
if self.resource_id is not None:
|
||||
try:
|
||||
sec = self.nova().security_groups.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
else:
|
||||
for rule in sec.rules:
|
||||
try:
|
||||
self.nova().security_group_rules.delete(rule['id'])
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
|
||||
self.nova().security_groups.delete(self.resource_id)
|
||||
|
@ -14,11 +14,11 @@
|
||||
import copy
|
||||
import uuid
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
from oslo.config import cfg
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import attributes
|
||||
from heat.engine import clients
|
||||
from heat.engine import constraints
|
||||
from heat.engine import properties
|
||||
from heat.engine import resource
|
||||
@ -626,7 +626,7 @@ class Server(stack_user.StackUser):
|
||||
self.nova(), self.resource_id) or ''
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound as ex:
|
||||
except nova_exceptions.NotFound as ex:
|
||||
LOG.warn(_('Instance (%(server)s) not found: %(ex)s')
|
||||
% {'server': self.resource_id, 'ex': ex})
|
||||
return ''
|
||||
@ -969,7 +969,7 @@ class Server(stack_user.StackUser):
|
||||
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
pass
|
||||
else:
|
||||
delete = scheduler.TaskRunner(nova_utils.delete_server, server)
|
||||
@ -989,7 +989,7 @@ class Server(stack_user.StackUser):
|
||||
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
raise exception.NotFound(_('Failed to find server %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
@ -1034,7 +1034,7 @@ class Server(stack_user.StackUser):
|
||||
|
||||
try:
|
||||
server = self.nova().servers.get(self.resource_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
raise exception.NotFound(_('Failed to find server %s') %
|
||||
self.resource_id)
|
||||
else:
|
||||
|
@ -12,6 +12,7 @@
|
||||
# under the License.
|
||||
|
||||
import json
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import attributes
|
||||
@ -362,16 +363,16 @@ class VolumeDetachTask(object):
|
||||
self.attachment_id)
|
||||
vol = self.clients.client('cinder').volumes.get(nova_vol.id)
|
||||
except (clients.cinderclient.exceptions.NotFound,
|
||||
clients.novaclient.exceptions.BadRequest,
|
||||
clients.novaclient.exceptions.NotFound):
|
||||
nova_exceptions.BadRequest,
|
||||
nova_exceptions.NotFound):
|
||||
LOG.warning(_('%s - volume not found') % str(self))
|
||||
return
|
||||
|
||||
# detach the volume using volume_attachment
|
||||
try:
|
||||
server_api.delete_server_volume(self.server_id, self.attachment_id)
|
||||
except (clients.novaclient.exceptions.BadRequest,
|
||||
clients.novaclient.exceptions.NotFound) as e:
|
||||
except (nova_exceptions.BadRequest,
|
||||
nova_exceptions.NotFound) as e:
|
||||
LOG.warning(_('%(res)s - %(err)s') % {'res': str(self),
|
||||
'err': e})
|
||||
|
||||
@ -398,7 +399,7 @@ class VolumeDetachTask(object):
|
||||
def server_has_attachment(server_id, attachment_id):
|
||||
try:
|
||||
server_api.get_server_volume(server_id, attachment_id)
|
||||
except clients.novaclient.exceptions.NotFound:
|
||||
except nova_exceptions.NotFound:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
@ -21,6 +21,7 @@ from testtools.matchers import MatchesRegex
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import function
|
||||
from heat.engine.notification import stack as notification
|
||||
from heat.engine import parser
|
||||
@ -253,7 +254,6 @@ class AutoScalingGroupTest(HeatTestCase):
|
||||
"""
|
||||
self._stub_validate()
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(instance.Instance, 'handle_create')
|
||||
self.m.StubOutWithMock(instance.Instance, 'check_create_complete')
|
||||
|
||||
@ -262,7 +262,8 @@ class AutoScalingGroupTest(HeatTestCase):
|
||||
|
||||
cookie = object()
|
||||
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
# for load balancer setup
|
||||
if setup_lb:
|
||||
self._stub_lb_create()
|
||||
@ -289,13 +290,13 @@ class AutoScalingGroupTest(HeatTestCase):
|
||||
notification.send(mox.IgnoreArg()).MultipleTimes().AndReturn(None)
|
||||
|
||||
# for instances in the group
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(instance.Instance, 'handle_create')
|
||||
self.m.StubOutWithMock(instance.Instance, 'check_create_complete')
|
||||
self.m.StubOutWithMock(instance.Instance, 'destroy')
|
||||
|
||||
if num_reloads_expected_on_updt > 1:
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
cookie = object()
|
||||
for i in range(num_creates_expected_on_updt):
|
||||
@ -311,8 +312,6 @@ class AutoScalingGroupTest(HeatTestCase):
|
||||
"""
|
||||
Expect update of the instances
|
||||
"""
|
||||
self.m.StubOutWithMock(instance.Instance, 'nova')
|
||||
instance.Instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
def activate_status(server):
|
||||
server.status = 'VERIFY_RESIZE'
|
||||
|
@ -12,11 +12,13 @@
|
||||
# under the License.
|
||||
|
||||
import mox
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
from testtools import skipIf
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import parser
|
||||
from heat.engine.resources import eip
|
||||
from heat.engine import scheduler
|
||||
@ -149,8 +151,7 @@ class EIPTest(HeatTestCase):
|
||||
force_networking('nova')
|
||||
super(EIPTest, self).setUp()
|
||||
self.fc = fakes.FakeClient()
|
||||
self.m.StubOutWithMock(eip.ElasticIp, 'nova')
|
||||
self.m.StubOutWithMock(eip.ElasticIpAssociation, 'nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
|
||||
def tearDown(self):
|
||||
@ -178,7 +179,7 @@ class EIPTest(HeatTestCase):
|
||||
return rsrc
|
||||
|
||||
def test_eip(self):
|
||||
eip.ElasticIp.nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
self.fc.servers.get('WebServer').AndReturn(self.fc.servers.list()[0])
|
||||
self.fc.servers.get('WebServer')
|
||||
|
||||
@ -205,8 +206,7 @@ class EIPTest(HeatTestCase):
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_association_eip(self):
|
||||
eip.ElasticIp.nova().MultipleTimes().AndReturn(self.fc)
|
||||
eip.ElasticIpAssociation.nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
self.fc.servers.get('WebServer').MultipleTimes() \
|
||||
.AndReturn(self.fc.servers.list()[0])
|
||||
|
||||
@ -238,9 +238,8 @@ class EIPTest(HeatTestCase):
|
||||
|
||||
def test_eip_with_exception(self):
|
||||
self.m.StubOutWithMock(self.fc.floating_ips, 'create')
|
||||
eip.ElasticIp.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.fc.floating_ips.create().AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('fake_falure'))
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
self.fc.floating_ips.create().AndRaise(fakes.fake_exception())
|
||||
self.m.ReplayAll()
|
||||
|
||||
t = template_format.parse(eip_template)
|
||||
@ -251,15 +250,15 @@ class EIPTest(HeatTestCase):
|
||||
resource_defns[resource_name],
|
||||
stack)
|
||||
|
||||
self.assertRaises(clients.novaclient.exceptions.NotFound,
|
||||
self.assertRaises(nova_exceptions.NotFound,
|
||||
rsrc.handle_create)
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_delete_eip_with_exception(self):
|
||||
self.m.StubOutWithMock(self.fc.floating_ips, 'delete')
|
||||
eip.ElasticIp.nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
self.fc.floating_ips.delete(mox.IsA(object)).AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('fake_falure'))
|
||||
fakes.fake_exception())
|
||||
self.fc.servers.get(mox.IsA(object)).AndReturn(False)
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -282,10 +281,8 @@ class AllocTest(HeatTestCase):
|
||||
super(AllocTest, self).setUp()
|
||||
|
||||
self.fc = fakes.FakeClient()
|
||||
self.m.StubOutWithMock(eip.ElasticIp, 'nova')
|
||||
self.m.StubOutWithMock(eip.ElasticIpAssociation, 'nova')
|
||||
self.m.StubOutWithMock(self.fc.servers, 'get')
|
||||
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(parser.Stack, 'resource_by_refid')
|
||||
self.m.StubOutWithMock(clients.neutronclient.Client,
|
||||
'create_floatingip')
|
||||
@ -468,7 +465,7 @@ class AllocTest(HeatTestCase):
|
||||
})
|
||||
|
||||
def test_neutron_eip(self):
|
||||
eip.ElasticIp.nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
self.fc.servers.get('WebServer').AndReturn(self.fc.servers.list()[0])
|
||||
self.fc.servers.get('WebServer')
|
||||
|
||||
|
@ -32,6 +32,7 @@ from heat.common import template_format
|
||||
from heat.common import urlfetch
|
||||
from heat.db import api as db_api
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import dependencies
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
@ -215,8 +216,8 @@ def setup_mocks(mocks, stack, mock_image_constraint=True):
|
||||
fc = fakes.FakeClient()
|
||||
mocks.StubOutWithMock(instances.Instance, 'nova')
|
||||
instances.Instance.nova().MultipleTimes().AndReturn(fc)
|
||||
mocks.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(fc)
|
||||
mocks.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(fc)
|
||||
instance = stack['WebServer']
|
||||
if mock_image_constraint:
|
||||
setup_mock_for_image_constraint(mocks,
|
||||
@ -264,7 +265,7 @@ def clean_up_stack(stack, delete_res=True):
|
||||
instances.Instance.nova().MultipleTimes().AndReturn(fc)
|
||||
m.StubOutWithMock(fc.client, 'get_servers_9999')
|
||||
get = fc.client.get_servers_9999
|
||||
get().AndRaise(service.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes.fake_exception())
|
||||
m.ReplayAll()
|
||||
stack.delete()
|
||||
if delete_res:
|
||||
@ -417,7 +418,7 @@ class StackCreateTest(HeatTestCase):
|
||||
|
||||
self.m.StubOutWithMock(fc.client, 'get_servers_9999')
|
||||
get = fc.client.get_servers_9999
|
||||
get().AndRaise(service.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes.fake_exception())
|
||||
mox.Replay(get)
|
||||
stack.delete()
|
||||
|
||||
@ -1391,7 +1392,7 @@ class StackServiceAuthorizeTest(HeatTestCase):
|
||||
fc = setup_mocks(self.m, stack)
|
||||
self.m.StubOutWithMock(fc.client, 'get_servers_9999')
|
||||
get = fc.client.get_servers_9999
|
||||
get().AndRaise(service.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes.fake_exception())
|
||||
|
||||
self.m.ReplayAll()
|
||||
stack.store()
|
||||
|
@ -21,6 +21,7 @@ from neutronclient.v2_0 import client as neutronclient
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
from heat.engine import resource
|
||||
@ -114,10 +115,8 @@ class InstancesTest(HeatTestCase):
|
||||
|
||||
self._mock_get_image_id_success(image_id or 'CentOS 5.2', 1)
|
||||
|
||||
self.m.StubOutWithMock(instance, 'nova')
|
||||
instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
if stub_create:
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -314,8 +313,8 @@ class InstancesTest(HeatTestCase):
|
||||
instance = instances.Instance('instance_create_image',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
self._mock_get_image_id_success('1', 1)
|
||||
self.m.ReplayAll()
|
||||
@ -347,8 +346,7 @@ class InstancesTest(HeatTestCase):
|
||||
d2['server']['status'] = vm_delete_status
|
||||
get().AndReturn((200, d2))
|
||||
else:
|
||||
get().AndRaise(
|
||||
instances.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes.fake_exception())
|
||||
|
||||
self.m.ReplayAll()
|
||||
|
||||
|
@ -19,6 +19,7 @@ from testtools.matchers import MatchesRegex
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import function
|
||||
from heat.engine import parser
|
||||
from heat.engine.resources import image
|
||||
@ -211,8 +212,8 @@ class InstanceGroupTest(HeatTestCase):
|
||||
"""
|
||||
Expect update of the instances
|
||||
"""
|
||||
self.m.StubOutWithMock(instance.Instance, 'nova')
|
||||
instance.Instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
|
||||
def activate_status(server):
|
||||
server.status = 'VERIFY_RESIZE'
|
||||
|
@ -15,6 +15,7 @@ import uuid
|
||||
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
from heat.engine.resources import glance_utils
|
||||
@ -175,10 +176,8 @@ class instancesTest(HeatTestCase):
|
||||
instance = instances.Instance('%s_name' % name,
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(instance, 'nova')
|
||||
instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
self._mock_get_image_id_success(image_id, 1)
|
||||
|
||||
@ -235,10 +234,8 @@ class instancesTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(nic, 'neutron')
|
||||
nic.neutron().MultipleTimes().AndReturn(FakeNeutron())
|
||||
|
||||
self.m.StubOutWithMock(instance, 'nova')
|
||||
instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
# need to resolve the template functions
|
||||
server_userdata = nova_utils.build_userdata(
|
||||
|
@ -21,6 +21,7 @@ from oslo.config import cfg
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import resource
|
||||
from heat.engine.resources import glance_utils
|
||||
from heat.engine.resources import instance
|
||||
@ -104,7 +105,7 @@ class LoadBalancerTest(HeatTestCase):
|
||||
def setUp(self):
|
||||
super(LoadBalancerTest, self).setUp()
|
||||
self.fc = fakes.FakeClient()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
self.m.StubOutWithMock(resource.Resource, 'metadata_set')
|
||||
self.stub_keystoneclient(username='test_stack.CfnLBUser')
|
||||
@ -136,7 +137,7 @@ class LoadBalancerTest(HeatTestCase):
|
||||
utils.PhysName('test_stack', 'LoadBalancer'),
|
||||
'LB_instance',
|
||||
limit=instance.Instance.physical_resource_name_limit)
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.fc.servers.create(
|
||||
flavor=2, image=746, key_name=key_name,
|
||||
meta=None, nics=None, name=server_name,
|
||||
|
@ -18,7 +18,7 @@ from testtools import skipIf
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine.resources.neutron import loadbalancer
|
||||
from heat.engine.resources.neutron import neutron_utils
|
||||
from heat.engine import scheduler
|
||||
@ -955,10 +955,10 @@ class LoadBalancerTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(neutronclient.Client, 'create_member')
|
||||
self.m.StubOutWithMock(neutronclient.Client, 'delete_member')
|
||||
self.stub_keystoneclient()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
|
||||
def create_load_balancer(self):
|
||||
clients.OpenStackClients._nova().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
neutronclient.Client.create_member({
|
||||
'member': {
|
||||
'pool_id': 'pool123', 'protocol_port': 8080,
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine.resources import glance_utils
|
||||
from heat.engine.resources import instance as instances
|
||||
from heat.engine.resources import nova_utils
|
||||
@ -59,8 +60,8 @@ class nokeyTest(HeatTestCase):
|
||||
instance = instances.Instance('create_instance_name',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(instance, 'nova')
|
||||
instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
g_cli_mock = self.m.CreateMockAnything()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_glance')
|
||||
clients.OpenStackClients._glance().MultipleTimes().AndReturn(
|
||||
|
@ -12,19 +12,18 @@
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
|
||||
from novaclient import exceptions as ncli_ex
|
||||
from novaclient.v1_1 import client as novaclient
|
||||
import mock
|
||||
|
||||
from heat.common import exception as heat_ex
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine.resources.nova_floatingip import NovaFloatingIp
|
||||
from heat.engine.resources.nova_floatingip import NovaFloatingIpAssociation
|
||||
from heat.engine import rsrc_defn
|
||||
from heat.engine import scheduler
|
||||
from heat.tests.common import HeatTestCase
|
||||
from heat.tests import utils
|
||||
from heat.tests.v1_1 import fakes
|
||||
|
||||
|
||||
floating_ip_template = '''
|
||||
@ -62,8 +61,8 @@ class NovaFloatingIPTest(HeatTestCase):
|
||||
def setUp(self):
|
||||
super(NovaFloatingIPTest, self).setUp()
|
||||
|
||||
self.novaclient = novaclient.Client('user', 'pass', 'project', 'uri')
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.novaclient = mock.Mock()
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(self.novaclient.floating_ips, 'create')
|
||||
self.m.StubOutWithMock(self.novaclient.floating_ips, 'get')
|
||||
self.m.StubOutWithMock(self.novaclient.floating_ips, 'delete')
|
||||
@ -79,7 +78,7 @@ class NovaFloatingIPTest(HeatTestCase):
|
||||
return mock
|
||||
|
||||
def prepare_floating_ip(self):
|
||||
clients.OpenStackClients._nova().AndReturn(self.novaclient)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.novaclient)
|
||||
self.novaclient.floating_ips.create(pool='public').AndReturn(
|
||||
self._make_obj(**{
|
||||
'id': '1',
|
||||
@ -95,7 +94,7 @@ class NovaFloatingIPTest(HeatTestCase):
|
||||
return NovaFloatingIp('MyFloatingIP', floating_ip, stack)
|
||||
|
||||
def prepare_floating_ip_assoc(self):
|
||||
clients.OpenStackClients._nova().AndReturn(
|
||||
nova.NovaClientPlugin._create().AndReturn(
|
||||
self.novaclient)
|
||||
self.novaclient.servers.get('67dc62f9-efde-4c8b-94af-013e00f5dc57')
|
||||
self.novaclient.floating_ips.get('1').AndReturn(
|
||||
@ -146,7 +145,7 @@ class NovaFloatingIPTest(HeatTestCase):
|
||||
def test_delete_floating_ip_assoc_successful_if_create_failed(self):
|
||||
rsrc = self.prepare_floating_ip_assoc()
|
||||
self.novaclient.servers.add_floating_ip(None, '11.0.0.1').AndRaise(
|
||||
ncli_ex.BadRequest(400))
|
||||
fakes.fake_exception(400))
|
||||
|
||||
self.m.ReplayAll()
|
||||
|
||||
|
@ -14,9 +14,7 @@
|
||||
import collections
|
||||
import copy
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine.resources import nova_keypair
|
||||
from heat.engine import scheduler
|
||||
from heat.tests.common import HeatTestCase
|
||||
@ -58,8 +56,8 @@ class NovaKeyPairTest(HeatTestCase):
|
||||
stack = utils.parse_stack(template)
|
||||
definition = stack.t.resource_definitions(stack)['kp']
|
||||
kp_res = nova_keypair.KeyPair('kp', definition, stack)
|
||||
self.m.StubOutWithMock(kp_res, "nova")
|
||||
kp_res.nova().MultipleTimes().AndReturn(self.fake_nova)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fake_nova)
|
||||
return kp_res
|
||||
|
||||
def _get_mock_kp_for_create(self, key_name, public_key=None,
|
||||
@ -110,7 +108,7 @@ class NovaKeyPairTest(HeatTestCase):
|
||||
test_res.resource_id = "key_name"
|
||||
test_res.state_set(test_res.CREATE, test_res.COMPLETE)
|
||||
(self.fake_keypairs.delete("key_name")
|
||||
.AndRaise(nova_exceptions.NotFound(404)))
|
||||
.AndRaise(fakes.fake_exception()))
|
||||
self.m.ReplayAll()
|
||||
scheduler.TaskRunner(test_res.delete)()
|
||||
self.assertEqual((test_res.DELETE, test_res.COMPLETE), test_res.state)
|
||||
@ -152,13 +150,13 @@ class KeypairConstraintTest(HeatTestCase):
|
||||
|
||||
def test_validation(self):
|
||||
client = fakes.FakeClient()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(client)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(client)
|
||||
client.keypairs = self.m.CreateMockAnything()
|
||||
|
||||
key = collections.namedtuple("Key", ["name"])
|
||||
key.name = "foo"
|
||||
client.keypairs.get('bar').AndRaise(nova_exceptions.NotFound(404))
|
||||
client.keypairs.get('bar').AndRaise(fakes.fake_exception())
|
||||
client.keypairs.get(key.name).AndReturn(key)
|
||||
self.m.ReplayAll()
|
||||
|
||||
|
@ -14,12 +14,11 @@
|
||||
import json
|
||||
import mock
|
||||
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.common import template_format
|
||||
from heat.engine import scheduler
|
||||
from heat.tests.common import HeatTestCase
|
||||
from heat.tests import utils
|
||||
from heat.tests.v1_1 import fakes
|
||||
|
||||
sg_template = {
|
||||
"heat_template_version": "2013-05-23",
|
||||
@ -101,7 +100,7 @@ class NovaServerGroupTest(HeatTestCase):
|
||||
|
||||
def test_sg_delete_not_found(self):
|
||||
self._create_sg('test')
|
||||
self.sg_mgr.delete.side_effect = nova_exceptions.NotFound("ahhhhh")
|
||||
self.sg_mgr.delete.side_effect = fakes.fake_exception()
|
||||
scheduler.TaskRunner(self.sg.delete)()
|
||||
self.sg_mgr.delete.assert_called_once_with('test')
|
||||
self.assertEqual((self.sg.DELETE, self.sg.COMPLETE),
|
||||
|
@ -18,9 +18,9 @@ import mock
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.common import exception
|
||||
from heat.engine import clients
|
||||
from heat.engine.resources import nova_utils
|
||||
from heat.tests.common import HeatTestCase
|
||||
from heat.tests.v1_1 import fakes
|
||||
|
||||
|
||||
class NovaUtilsTests(HeatTestCase):
|
||||
@ -84,7 +84,7 @@ class NovaUtilsTests(HeatTestCase):
|
||||
self.nova_client.keypairs.get(
|
||||
my_key_name).AndReturn(my_key)
|
||||
self.nova_client.keypairs.get(
|
||||
'notakey').AndRaise(nova_exceptions.NotFound(404))
|
||||
'notakey').AndRaise(fakes.fake_exception())
|
||||
self.m.ReplayAll()
|
||||
self.assertEqual(my_key, nova_utils.get_keypair(self.nova_client,
|
||||
my_key_name))
|
||||
@ -105,16 +105,12 @@ class NovaUtilsRefreshServerTests(HeatTestCase):
|
||||
|
||||
def test_overlimit_error(self):
|
||||
server = mock.Mock()
|
||||
server.get.side_effect = clients.novaclient.exceptions.OverLimit(
|
||||
413, "limit reached")
|
||||
server.get.side_effect = fakes.fake_exception(413)
|
||||
self.assertIsNone(nova_utils.refresh_server(server))
|
||||
|
||||
def test_500_error(self):
|
||||
server = self.m.CreateMockAnything()
|
||||
msg = ("ClientException: The server has either erred or is "
|
||||
"incapable of performing the requested operation.")
|
||||
server.get().AndRaise(
|
||||
clients.novaclient.exceptions.ClientException(500, msg))
|
||||
server.get().AndRaise(fakes.fake_exception(500))
|
||||
self.m.ReplayAll()
|
||||
|
||||
self.assertIsNone(nova_utils.refresh_server(server))
|
||||
@ -122,10 +118,7 @@ class NovaUtilsRefreshServerTests(HeatTestCase):
|
||||
|
||||
def test_503_error(self):
|
||||
server = self.m.CreateMockAnything()
|
||||
msg = ("ClientException: The server has either erred or is "
|
||||
"incapable of performing the requested operation.")
|
||||
server.get().AndRaise(
|
||||
clients.novaclient.exceptions.ClientException(503, msg))
|
||||
server.get().AndRaise(fakes.fake_exception(503))
|
||||
self.m.ReplayAll()
|
||||
|
||||
self.assertIsNone(nova_utils.refresh_server(server))
|
||||
@ -133,13 +126,10 @@ class NovaUtilsRefreshServerTests(HeatTestCase):
|
||||
|
||||
def test_unhandled_exception(self):
|
||||
server = self.m.CreateMockAnything()
|
||||
msg = ("ClientException: The server has either erred or is "
|
||||
"incapable of performing the requested operation.")
|
||||
server.get().AndRaise(
|
||||
clients.novaclient.exceptions.ClientException(501, msg))
|
||||
server.get().AndRaise(fakes.fake_exception(501))
|
||||
self.m.ReplayAll()
|
||||
|
||||
self.assertRaises(clients.novaclient.exceptions.ClientException,
|
||||
self.assertRaises(nova_exceptions.ClientException,
|
||||
nova_utils.refresh_server, server)
|
||||
self.m.VerifyAll()
|
||||
|
||||
|
@ -32,6 +32,7 @@ import heat.engine.cfn.functions
|
||||
from heat.engine.cfn import functions as cfn_funcs
|
||||
from heat.engine.cfn import template as cfn_t
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import function
|
||||
from heat.engine.hot import template as hot_t
|
||||
@ -466,9 +467,9 @@ Mappings:
|
||||
snippet = {"Fn::GetAZs": ""}
|
||||
stack = parser.Stack(self.ctx, 'test_stack',
|
||||
parser.Template(empty_template))
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
fc = fakes.FakeClient()
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(fc)
|
||||
self.m.ReplayAll()
|
||||
self.assertEqual(["nova1"], self.resolve(snippet, tmpl, stack))
|
||||
|
||||
@ -3281,8 +3282,8 @@ class StackTest(HeatTestCase):
|
||||
# Mock objects so the query for flavors in server.FlavorConstraint
|
||||
# works for stack creation
|
||||
fc = fakes.FakeClient()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(fc)
|
||||
|
||||
fc.flavors = self.m.CreateMockAnything()
|
||||
flavor = collections.namedtuple("Flavor", ["id", "name"])
|
||||
|
@ -20,7 +20,7 @@ from novaclient.v1_1 import security_groups as nova_sg
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import parser
|
||||
from heat.engine import scheduler
|
||||
from heat.tests.common import HeatTestCase
|
||||
@ -127,7 +127,7 @@ Resources:
|
||||
def setUp(self):
|
||||
super(SecurityGroupTest, self).setUp()
|
||||
self.fc = fakes.FakeClient()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.stub_keystoneclient()
|
||||
self.m.StubOutWithMock(nova_sgr.SecurityGroupRuleManager, 'create')
|
||||
self.m.StubOutWithMock(nova_sgr.SecurityGroupRuleManager, 'delete')
|
||||
@ -165,7 +165,7 @@ Resources:
|
||||
|
||||
def test_security_group_nova(self):
|
||||
#create script
|
||||
clients.OpenStackClients._nova().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
nova_sg.SecurityGroupManager.list().AndReturn([NovaSG(
|
||||
id=1,
|
||||
name='test',
|
||||
@ -257,7 +257,7 @@ Resources:
|
||||
|
||||
def test_security_group_nova_bad_source_group(self):
|
||||
#create script
|
||||
clients.OpenStackClients._nova().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
nova_sg.SecurityGroupManager.list().AndReturn([NovaSG(
|
||||
id=1,
|
||||
name='test',
|
||||
@ -319,9 +319,9 @@ Resources:
|
||||
stack.delete()
|
||||
self.m.VerifyAll()
|
||||
|
||||
def test_security_group_nova_exception(self):
|
||||
def test_security_group_client_exception(self):
|
||||
#create script
|
||||
clients.OpenStackClients._nova().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
sg_name = utils.PhysName('test_stack', 'the_sg')
|
||||
nova_sg.SecurityGroupManager.list().AndReturn([
|
||||
NovaSG(
|
||||
@ -340,20 +340,16 @@ Resources:
|
||||
|
||||
nova_sgr.SecurityGroupRuleManager.create(
|
||||
2, 'tcp', '22', '22', '0.0.0.0/0', None).AndRaise(
|
||||
clients.novaclient.exceptions.BadRequest(
|
||||
400, 'Rule already exists'))
|
||||
fakes.fake_exception(400, 'Rule already exists'))
|
||||
nova_sgr.SecurityGroupRuleManager.create(
|
||||
2, 'tcp', '80', '80', '0.0.0.0/0', None).AndReturn(
|
||||
clients.novaclient.exceptions.BadRequest(
|
||||
400, 'Rule already exists'))
|
||||
fakes.fake_exception(400, 'Rule already exists'))
|
||||
nova_sgr.SecurityGroupRuleManager.create(
|
||||
2, 'tcp', None, None, None, 1).AndReturn(
|
||||
clients.novaclient.exceptions.BadRequest(
|
||||
400, 'Rule already exists'))
|
||||
fakes.fake_exception(400, 'Rule already exists'))
|
||||
nova_sgr.SecurityGroupRuleManager.create(
|
||||
2, 'icmp', None, None, None, '1').AndReturn(
|
||||
clients.novaclient.exceptions.BadRequest(
|
||||
400, 'Rule already exists'))
|
||||
fakes.fake_exception(400, 'Rule already exists'))
|
||||
|
||||
# delete script
|
||||
nova_sg.SecurityGroupManager.get(2).AndReturn(NovaSG(
|
||||
@ -405,17 +401,17 @@ Resources:
|
||||
}]
|
||||
))
|
||||
nova_sgr.SecurityGroupRuleManager.delete(130).AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('goneburger'))
|
||||
fakes.fake_exception())
|
||||
nova_sgr.SecurityGroupRuleManager.delete(131).AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('goneburger'))
|
||||
fakes.fake_exception())
|
||||
nova_sgr.SecurityGroupRuleManager.delete(132).AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('goneburger'))
|
||||
fakes.fake_exception())
|
||||
nova_sgr.SecurityGroupRuleManager.delete(133).AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('goneburger'))
|
||||
fakes.fake_exception())
|
||||
nova_sg.SecurityGroupManager.delete(2).AndReturn(None)
|
||||
|
||||
nova_sg.SecurityGroupManager.get(2).AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('goneburger'))
|
||||
fakes.fake_exception())
|
||||
|
||||
self.m.ReplayAll()
|
||||
stack = self.create_stack(self.test_template_nova)
|
||||
|
@ -17,11 +17,12 @@ import uuid
|
||||
|
||||
import mock
|
||||
import mox
|
||||
from novaclient import exceptions
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
from heat.engine import resource
|
||||
@ -124,10 +125,8 @@ class ServersTest(HeatTestCase):
|
||||
self._mock_get_image_id_success(image_id or 'CentOS 5.2', 1,
|
||||
server_rebuild=server_rebuild)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
if stub_create:
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -186,18 +185,16 @@ class ServersTest(HeatTestCase):
|
||||
|
||||
def _mock_get_keypair_success(self, keypair_input, keypair):
|
||||
n_cli_mock = self.m.CreateMockAnything()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(
|
||||
n_cli_mock)
|
||||
self.m.StubOutWithMock(nova_utils, 'get_keypair')
|
||||
nova_utils.get_keypair(n_cli_mock, keypair_input).MultipleTimes().\
|
||||
AndReturn(keypair)
|
||||
|
||||
def _server_validate_mock(self, server):
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
|
||||
def test_server_create(self):
|
||||
@ -276,10 +273,8 @@ class ServersTest(HeatTestCase):
|
||||
disk_config=None, reservation_id=None, files={},
|
||||
admin_pass=None).AndReturn(return_server)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', image_id)
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -455,10 +450,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -491,7 +484,7 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(server, 'heat')
|
||||
self.m.StubOutWithMock(sc.SoftwareConfig, 'get_software_config')
|
||||
server.heat().AndReturn(None)
|
||||
@ -499,9 +492,7 @@ class ServersTest(HeatTestCase):
|
||||
None, '8c813873-f6ee-4809-8eec-959ef39acb55').AndReturn(
|
||||
'wordpress from config')
|
||||
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -534,7 +525,7 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(server, 'heat')
|
||||
self.m.StubOutWithMock(sc.SoftwareConfig, 'get_software_config')
|
||||
server.heat().AndReturn(None)
|
||||
@ -542,9 +533,7 @@ class ServersTest(HeatTestCase):
|
||||
None, sc_id).AndRaise(exception.SoftwareConfigMissing(
|
||||
software_config_id=sc_id))
|
||||
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -576,12 +565,10 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(server, 'heat')
|
||||
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -641,11 +628,9 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -693,8 +678,8 @@ class ServersTest(HeatTestCase):
|
||||
|
||||
self.m.VerifyAll()
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
def test_server_create_default_admin_pass(self, mock_nova):
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
def test_server_create_default_admin_pass(self, mock_client):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.adminPass = 'autogenerated'
|
||||
stack_name = 'admin_pass_s'
|
||||
@ -704,7 +689,7 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
mock_nova.return_value = self.fc
|
||||
mock_client.return_value = self.fc
|
||||
self.fc.servers.create = mock.Mock(return_value=return_server)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
@ -719,8 +704,8 @@ class ServersTest(HeatTestCase):
|
||||
disk_config=None, reservation_id=None,
|
||||
files={}, admin_pass=None)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, '_nova')
|
||||
def test_server_create_custom_admin_pass(self, mock_nova):
|
||||
@mock.patch.object(nova.NovaClientPlugin, '_create')
|
||||
def test_server_create_custom_admin_pass(self, mock_client):
|
||||
return_server = self.fc.servers.list()[1]
|
||||
return_server.adminPass = 'foo'
|
||||
stack_name = 'admin_pass_s'
|
||||
@ -731,7 +716,7 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
mock_nova.return_value = self.fc
|
||||
mock_client.return_value = self.fc
|
||||
self.fc.servers.create = mock.Mock(return_value=return_server)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
@ -764,8 +749,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('server_create_image',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('1', 1)
|
||||
|
||||
self.m.ReplayAll()
|
||||
@ -795,8 +780,8 @@ class ServersTest(HeatTestCase):
|
||||
if mock_nova:
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.ReplayAll()
|
||||
return server
|
||||
|
||||
@ -845,8 +830,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('server_validate_test',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(image.ImageConstraint, "validate")
|
||||
image.ImageConstraint.validate(
|
||||
mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(True)
|
||||
@ -869,8 +854,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('WebServer',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.ReplayAll()
|
||||
|
||||
error = self.assertRaises(exception.StackValidationFailed,
|
||||
@ -895,8 +880,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('server_validate_with_networks',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
|
||||
self.m.ReplayAll()
|
||||
@ -926,10 +911,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('server_validate_net_security_groups',
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
@ -954,7 +937,7 @@ class ServersTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndReturn(server_get)
|
||||
get().AndRaise(servers.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes_v1_1.fake_exception())
|
||||
mox.Replay(get)
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -974,7 +957,7 @@ class ServersTest(HeatTestCase):
|
||||
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndRaise(servers.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes_v1_1.fake_exception())
|
||||
mox.Replay(get)
|
||||
|
||||
scheduler.TaskRunner(server.delete)()
|
||||
@ -1066,10 +1049,8 @@ class ServersTest(HeatTestCase):
|
||||
self.m.UnsetStubs()
|
||||
|
||||
# part two change the metadata (test removing the old key)
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.ReplayAll()
|
||||
new_meta = {'new_key': 'yeah'}
|
||||
|
||||
@ -1182,8 +1163,8 @@ class ServersTest(HeatTestCase):
|
||||
def test_server_update_server_flavor_replace(self):
|
||||
stack_name = 'update_flvrep'
|
||||
(tmpl, stack) = self._setup_test_stack(stack_name)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1201,8 +1182,8 @@ class ServersTest(HeatTestCase):
|
||||
def test_server_update_server_flavor_policy_update(self):
|
||||
stack_name = 'update_flvpol'
|
||||
(tmpl, stack) = self._setup_test_stack(stack_name)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1229,8 +1210,8 @@ class ServersTest(HeatTestCase):
|
||||
server = servers.Server('server_update_image_replace',
|
||||
resource_defns['WebServer'], stack)
|
||||
image_id = self.getUniqueString()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(image.ImageConstraint, "validate")
|
||||
image.ImageConstraint.validate(
|
||||
mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(True)
|
||||
@ -1391,7 +1372,7 @@ class ServersTest(HeatTestCase):
|
||||
server.resource_id = '1234'
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndRaise(servers.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes_v1_1.fake_exception())
|
||||
mox.Replay(get)
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1560,7 +1541,7 @@ class ServersTest(HeatTestCase):
|
||||
# return the SUSPENDED state first (twice, so we sleep)
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndRaise(servers.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes_v1_1.fake_exception())
|
||||
self.m.ReplayAll()
|
||||
|
||||
server.state_set(server.SUSPEND, server.COMPLETE)
|
||||
@ -1649,10 +1630,12 @@ class ServersTest(HeatTestCase):
|
||||
self.assertEqual([{'net-id': 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'}],
|
||||
server._build_nics([{'network': 'public'}]))
|
||||
|
||||
self.assertRaises(exceptions.NoUniqueMatch, server._build_nics,
|
||||
self.assertRaises(nova_exceptions.NoUniqueMatch,
|
||||
server._build_nics,
|
||||
([{'network': 'foo'}]))
|
||||
|
||||
self.assertRaises(exceptions.NotFound, server._build_nics,
|
||||
self.assertRaises(nova_exceptions.NotFound,
|
||||
server._build_nics,
|
||||
([{'network': 'bar'}]))
|
||||
|
||||
def test_server_without_ip_address(self):
|
||||
@ -1762,8 +1745,8 @@ class ServersTest(HeatTestCase):
|
||||
resource_defns = tmpl.resource_definitions(stack)
|
||||
server = servers.Server('server_create_image_err',
|
||||
resource_defns['WebServer'], stack)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1781,8 +1764,8 @@ class ServersTest(HeatTestCase):
|
||||
resource_defns = tmpl.resource_definitions(stack)
|
||||
server = servers.Server('server_create_image_err',
|
||||
resource_defns['WebServer'], stack)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1805,8 +1788,8 @@ class ServersTest(HeatTestCase):
|
||||
resource_defns = tmpl.resource_definitions(stack)
|
||||
server = servers.Server('server_create_image_err',
|
||||
resource_defns['WebServer'], stack)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.ReplayAll()
|
||||
|
||||
ex = self.assertRaises(exception.StackValidationFailed,
|
||||
@ -1832,10 +1815,8 @@ class ServersTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(self.fc.limits, 'get')
|
||||
self.fc.limits.get().MultipleTimes().AndReturn(self.limits)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1861,8 +1842,8 @@ class ServersTest(HeatTestCase):
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
self.assertIsNone(server.validate())
|
||||
@ -1886,10 +1867,8 @@ class ServersTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(self.fc.limits, 'get')
|
||||
self.fc.limits.get().MultipleTimes().AndReturn(self.limits)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1916,10 +1895,8 @@ class ServersTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(self.fc.limits, 'get')
|
||||
self.fc.limits.get().MultipleTimes().AndReturn(self.limits)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1939,10 +1916,8 @@ class ServersTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(self.fc.limits, 'get')
|
||||
self.fc.limits.get().MultipleTimes().AndReturn(self.limits)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1962,10 +1937,8 @@ class ServersTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(self.fc.limits, 'get')
|
||||
self.fc.limits.get().MultipleTimes().AndReturn(self.limits)
|
||||
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 'image_id')
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1984,7 +1957,7 @@ class ServersTest(HeatTestCase):
|
||||
server.resource_id = '1234'
|
||||
self.m.StubOutWithMock(self.fc.client, 'get_servers_1234')
|
||||
get = self.fc.client.get_servers_1234
|
||||
get().AndRaise(servers.clients.novaclient.exceptions.NotFound(404))
|
||||
get().AndRaise(fakes_v1_1.fake_exception())
|
||||
mox.Replay(get)
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -2030,10 +2003,8 @@ class ServersTest(HeatTestCase):
|
||||
block_device_mapping=None, config_drive=None,
|
||||
disk_config=None, reservation_id=None, files={},
|
||||
admin_pass=None).AndReturn(return_server)
|
||||
self.m.StubOutWithMock(server, 'nova')
|
||||
server.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', image_id)
|
||||
self.m.StubOutWithMock(nova_utils, 'build_userdata')
|
||||
nova_utils.build_userdata(server,
|
||||
@ -2536,8 +2507,8 @@ class FlavorConstraintTest(HeatTestCase):
|
||||
def test_validate(self):
|
||||
client = fakes.FakeClient()
|
||||
self.stub_keystoneclient()
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(client)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(client)
|
||||
client.flavors = self.m.CreateMockAnything()
|
||||
|
||||
flavor = collections.namedtuple("Flavor", ["id", "name"])
|
||||
|
@ -18,6 +18,7 @@ import mox
|
||||
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
from heat.engine.resources import glance_utils
|
||||
@ -152,10 +153,8 @@ class ServerTagsTest(HeatTestCase):
|
||||
instance = instances.Instance(stack_name,
|
||||
resource_defns['WebServer'], stack)
|
||||
|
||||
self.m.StubOutWithMock(instance, 'nova')
|
||||
instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 1)
|
||||
# need to resolve the template functions
|
||||
server_userdata = nova_utils.build_userdata(
|
||||
@ -205,11 +204,9 @@ class ServerTagsTest(HeatTestCase):
|
||||
|
||||
new_tags = [{'Key': 'Food', 'Value': 'yuk'}]
|
||||
new_metadata = dict((tm['Key'], tm['Value']) for tm in new_tags)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
|
||||
self.m.StubOutWithMock(instance, 'nova')
|
||||
instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(self.fc.servers, 'set_meta')
|
||||
self.fc.servers.set_meta(self.fc.servers.list()[1],
|
||||
new_metadata).AndReturn(None)
|
||||
@ -242,10 +239,8 @@ class ServerTagsTest(HeatTestCase):
|
||||
nova_tags['metering.groupname'] = utils.PhysName(stack.name,
|
||||
group.name)
|
||||
|
||||
self.m.StubOutWithMock(instances.Instance, 'nova')
|
||||
instances.Instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 1)
|
||||
# need to resolve the template functions
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
@ -293,10 +288,8 @@ class ServerTagsTest(HeatTestCase):
|
||||
self.m.StubOutWithMock(group, '_cooldown_timestamp')
|
||||
group._cooldown_timestamp(mox.IgnoreArg()).AndReturn(None)
|
||||
|
||||
self.m.StubOutWithMock(instances.Instance, 'nova')
|
||||
instances.Instance.nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('CentOS 5.2', 1)
|
||||
# need to resolve the template functions
|
||||
self.m.StubOutWithMock(self.fc.servers, 'create')
|
||||
|
@ -26,7 +26,7 @@ from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.db.sqlalchemy import api as db_api
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients import novaclient
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine import parser
|
||||
from heat.engine.resource import Resource
|
||||
@ -121,8 +121,8 @@ class SqlAlchemyTest(HeatTestCase):
|
||||
fc = fakes.FakeClient()
|
||||
mocks.StubOutWithMock(instances.Instance, 'nova')
|
||||
instances.Instance.nova().MultipleTimes().AndReturn(fc)
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self._mock_get_image_id_success('F17-x86_64-gold', 744)
|
||||
|
||||
mocks.StubOutWithMock(fc.servers, 'create')
|
||||
@ -141,7 +141,7 @@ class SqlAlchemyTest(HeatTestCase):
|
||||
instances.Instance.nova().MultipleTimes().AndReturn(fc)
|
||||
mocks.StubOutWithMock(fc.client, 'get_servers_9999')
|
||||
get = fc.client.get_servers_9999
|
||||
get().MultipleTimes().AndRaise(novaclient.exceptions.NotFound(404))
|
||||
get().MultipleTimes().AndRaise(fakes.fake_exception())
|
||||
|
||||
@mock.patch.object(db_api, '_paginate_query')
|
||||
def test_filter_and_page_query_paginates_query(self, mock_paginate_query):
|
||||
|
@ -18,6 +18,7 @@ from testtools import skipIf
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine import environment
|
||||
from heat.engine.hot.template import HOTemplate
|
||||
from heat.engine import parser
|
||||
@ -1267,8 +1268,8 @@ class validateTest(HeatTestCase):
|
||||
|
||||
self._mock_get_image_id_success('image_name', 'image_id')
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.ReplayAll()
|
||||
|
||||
resource = stack['Instance']
|
||||
@ -1284,8 +1285,8 @@ class validateTest(HeatTestCase):
|
||||
|
||||
self._mock_get_image_id_success('image_name', 'image_id')
|
||||
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.ReplayAll()
|
||||
|
||||
resource = stack['Instance']
|
||||
|
@ -22,6 +22,7 @@ from testtools import skipIf
|
||||
from heat.common import exception
|
||||
from heat.common import template_format
|
||||
from heat.engine import clients
|
||||
from heat.engine.clients.os import nova
|
||||
from heat.engine.resources import glance_utils
|
||||
from heat.engine.resources import image
|
||||
from heat.engine.resources import instance
|
||||
@ -101,7 +102,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc = fakes.FakeClient()
|
||||
self.cinder_fc = cinderclient.Client('username', 'password')
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_cinder')
|
||||
self.m.StubOutWithMock(clients.OpenStackClients, '_nova')
|
||||
self.m.StubOutWithMock(nova.NovaClientPlugin, '_create')
|
||||
self.m.StubOutWithMock(self.cinder_fc.volumes, 'create')
|
||||
self.m.StubOutWithMock(self.cinder_fc.volumes, 'get')
|
||||
self.m.StubOutWithMock(self.cinder_fc.volumes, 'delete')
|
||||
@ -168,7 +169,7 @@ class VolumeTest(HeatTestCase):
|
||||
device=u'/dev/vdc',
|
||||
update=False):
|
||||
if not update:
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.fc.volumes.create_server_volume(
|
||||
device=device, server_id=server, volume_id=volume).AndReturn(fva)
|
||||
self.cinder_fc.volumes.get(volume).AndReturn(fva)
|
||||
@ -211,7 +212,7 @@ class VolumeTest(HeatTestCase):
|
||||
stack_name = 'test_volume_stack'
|
||||
|
||||
# create script
|
||||
clients.OpenStackClients._nova().MultipleTimes().AndReturn(self.fc)
|
||||
nova.NovaClientPlugin._create().MultipleTimes().AndReturn(self.fc)
|
||||
self.m.StubOutWithMock(instance.Instance, 'handle_create')
|
||||
self.m.StubOutWithMock(instance.Instance, 'check_create_complete')
|
||||
self.m.StubOutWithMock(vol.VolumeAttachment, 'handle_create')
|
||||
@ -333,8 +334,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -367,14 +367,12 @@ class VolumeTest(HeatTestCase):
|
||||
self.cinder_fc.volumes.get(fva.id).AndReturn(fva)
|
||||
|
||||
self.fc.volumes.delete_server_volume(
|
||||
'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.BadRequest('Already detached'))
|
||||
'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception(400))
|
||||
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
self.m.ReplayAll()
|
||||
|
||||
t = template_format.parse(volume_template)
|
||||
@ -437,8 +435,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -527,8 +524,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
# attach script
|
||||
self._mock_create_server_volume_script(fva2, device=u'/dev/vdd',
|
||||
@ -588,8 +584,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
# attach script
|
||||
self._mock_create_server_volume_script(fv2a, volume='vol-456',
|
||||
@ -647,8 +642,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
# attach script
|
||||
self._mock_create_server_volume_script(fva2, server=u'WikiDatabase2',
|
||||
@ -1040,8 +1034,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fva)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
self.m.ReplayAll()
|
||||
|
||||
@ -1222,8 +1215,7 @@ class VolumeTest(HeatTestCase):
|
||||
self.fc.volumes.get_server_volume(u'WikiDatabase',
|
||||
'vol-123').AndReturn(fvd)
|
||||
self.fc.volumes.get_server_volume(
|
||||
u'WikiDatabase', 'vol-123').AndRaise(
|
||||
clients.novaclient.exceptions.NotFound('NotFound'))
|
||||
u'WikiDatabase', 'vol-123').AndRaise(fakes.fake_exception())
|
||||
|
||||
# resize script
|
||||
fvr = FakeLatencyVolume(life_cycle=('extending', 'extending',
|
||||
|
@ -15,6 +15,7 @@
|
||||
# limitations under the License.
|
||||
|
||||
import httplib2
|
||||
import mock
|
||||
|
||||
from novaclient import client as base_client
|
||||
from novaclient import exceptions as nova_exceptions
|
||||
@ -24,6 +25,14 @@ from six.moves.urllib import parse as urlparse
|
||||
from heat.tests import fakes
|
||||
|
||||
|
||||
def fake_exception(status_code=404, message=None, details=None):
|
||||
resp = mock.Mock()
|
||||
resp.status_code = status_code
|
||||
resp.headers = None
|
||||
body = {'error': {'message': message, 'details': details}}
|
||||
return nova_exceptions.from_response(resp, body, None)
|
||||
|
||||
|
||||
class FakeClient(fakes.FakeClient, client.Client):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
@ -372,7 +381,7 @@ class FakeHTTPClient(base_client.HTTPClient):
|
||||
'public_key': 'foo'}})
|
||||
|
||||
def get_os_keypairs_test2(self, *kw):
|
||||
raise nova_exceptions.NotFound(404)
|
||||
raise fake_exception()
|
||||
|
||||
def get_os_availability_zone(self, *kw):
|
||||
return (200, {"availabilityZoneInfo": [{'zoneName': 'nova1'}]})
|
||||
|
@ -37,6 +37,9 @@ oslo.config.opts =
|
||||
heat.common.config = heat.common.config:list_opts
|
||||
heat.common.wsgi = heat.common.wsgi:list_opts
|
||||
|
||||
heat.clients =
|
||||
nova = heat.engine.clients.os.nova:NovaClientPlugin
|
||||
|
||||
heat.constraints =
|
||||
nova.flavor = heat.engine.resources.server:FlavorConstraint
|
||||
neutron.network = heat.engine.resources.neutron.net:NetworkConstraint
|
||||
@ -44,7 +47,6 @@ heat.constraints =
|
||||
iso_8601 = heat.engine.resources.iso_8601:ISO8601Constraint
|
||||
nova.keypair = heat.engine.resources.nova_keypair:KeypairConstraint
|
||||
|
||||
|
||||
heat.templates =
|
||||
heat_template_version.2013-05-23 = heat.engine.hot.template:HOTemplate
|
||||
HeatTemplateFormatVersion.2012-12-12 = heat.engine.cfn.template:CfnTemplate
|
||||
|
Loading…
x
Reference in New Issue
Block a user