Merge "Rename NovaWrapper to NovaClient"
This commit is contained in:
@@ -20,12 +20,13 @@
|
|||||||
|
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
|
||||||
|
|
||||||
from watcher._i18n import _
|
from watcher._i18n import _
|
||||||
from watcher.applier.primitives.base import BasePrimitive
|
from watcher.applier.primitives.base import BasePrimitive
|
||||||
from watcher.applier.primitives.wrapper.nova_wrapper import NovaWrapper
|
|
||||||
from watcher.applier.promise import Promise
|
from watcher.applier.promise import Promise
|
||||||
from watcher.common.exception import IllegalArgumentException
|
from watcher.common.exception import IllegalArgumentException
|
||||||
from watcher.common.keystone import KeystoneClient
|
from watcher.common.keystone import KeystoneClient
|
||||||
|
from watcher.common.nova import NovaClient
|
||||||
from watcher.decision_engine.model.hypervisor_state import HypervisorState
|
from watcher.decision_engine.model.hypervisor_state import HypervisorState
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@@ -74,7 +75,7 @@ class ChangeNovaServiceState(BasePrimitive):
|
|||||||
_("The target state is not defined"))
|
_("The target state is not defined"))
|
||||||
|
|
||||||
keystone = KeystoneClient()
|
keystone = KeystoneClient()
|
||||||
wrapper = NovaWrapper(keystone.get_credentials(),
|
wrapper = NovaClient(keystone.get_credentials(),
|
||||||
session=keystone.get_session())
|
session=keystone.get_session())
|
||||||
if state is True:
|
if state is True:
|
||||||
return wrapper.enable_service_nova_compute(self.host)
|
return wrapper.enable_service_nova_compute(self.host)
|
||||||
|
|||||||
@@ -21,11 +21,10 @@ from keystoneclient.auth.identity import v3
|
|||||||
from keystoneclient import session
|
from keystoneclient import session
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
|
|
||||||
|
|
||||||
from watcher.applier.primitives.base import BasePrimitive
|
from watcher.applier.primitives.base import BasePrimitive
|
||||||
from watcher.applier.primitives.wrapper.nova_wrapper import NovaWrapper
|
|
||||||
from watcher.applier.promise import Promise
|
from watcher.applier.promise import Promise
|
||||||
from watcher.common.keystone import KeystoneClient
|
from watcher.common.keystone import KeystoneClient
|
||||||
|
from watcher.common.nova import NovaClient
|
||||||
from watcher.decision_engine.planner.default import Primitives
|
from watcher.decision_engine.planner.default import Primitives
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
@@ -44,7 +43,7 @@ class Migrate(BasePrimitive):
|
|||||||
|
|
||||||
def migrate(self, destination):
|
def migrate(self, destination):
|
||||||
keystone = KeystoneClient()
|
keystone = KeystoneClient()
|
||||||
wrapper = NovaWrapper(keystone.get_credentials(),
|
wrapper = NovaClient(keystone.get_credentials(),
|
||||||
session=keystone.get_session())
|
session=keystone.get_session())
|
||||||
instance = wrapper.find_instance(self.instance_uuid)
|
instance = wrapper.find_instance(self.instance_uuid)
|
||||||
if instance:
|
if instance:
|
||||||
@@ -66,7 +65,7 @@ class Migrate(BasePrimitive):
|
|||||||
project_domain_name=creds2[
|
project_domain_name=creds2[
|
||||||
'project_domain_name'])
|
'project_domain_name'])
|
||||||
sess2 = session.Session(auth=auth2)
|
sess2 = session.Session(auth=auth2)
|
||||||
wrapper2 = NovaWrapper(creds2, session=sess2)
|
wrapper2 = NovaClient(creds2, session=sess2)
|
||||||
|
|
||||||
# todo(jed) remove Primitves
|
# todo(jed) remove Primitves
|
||||||
if self.migration_type is Primitives.COLD_MIGRATE:
|
if self.migration_type is Primitives.COLD_MIGRATE:
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import novaclient.exceptions as nvexceptions
|
|||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class NovaWrapper(object):
|
class NovaClient(object):
|
||||||
NOVA_CLIENT_API_VERSION = "2"
|
NOVA_CLIENT_API_VERSION = "2"
|
||||||
|
|
||||||
def __init__(self, creds, session):
|
def __init__(self, creds, session):
|
||||||
@@ -20,8 +20,8 @@
|
|||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
|
||||||
from watcher.applier.primitives.wrapper.nova_wrapper import NovaWrapper
|
|
||||||
from watcher.common.keystone import KeystoneClient
|
from watcher.common.keystone import KeystoneClient
|
||||||
|
from watcher.common.nova import NovaClient
|
||||||
from watcher.metrics_engine.cluster_model_collector.nova import \
|
from watcher.metrics_engine.cluster_model_collector.nova import \
|
||||||
NovaClusterModelCollector
|
NovaClusterModelCollector
|
||||||
|
|
||||||
@@ -32,6 +32,6 @@ CONF = cfg.CONF
|
|||||||
class CollectorManager(object):
|
class CollectorManager(object):
|
||||||
def get_cluster_model_collector(self):
|
def get_cluster_model_collector(self):
|
||||||
keystone = KeystoneClient()
|
keystone = KeystoneClient()
|
||||||
wrapper = NovaWrapper(keystone.get_credentials(),
|
wrapper = NovaClient(keystone.get_credentials(),
|
||||||
session=keystone.get_session())
|
session=keystone.get_session())
|
||||||
return NovaClusterModelCollector(wrapper=wrapper)
|
return NovaClusterModelCollector(wrapper=wrapper)
|
||||||
|
|||||||
@@ -24,15 +24,15 @@ import keystoneclient.v3.client as ksclient
|
|||||||
import mock
|
import mock
|
||||||
import novaclient.client as nvclient
|
import novaclient.client as nvclient
|
||||||
|
|
||||||
from watcher.applier.primitives.wrapper.nova_wrapper import NovaWrapper
|
from watcher.common.nova import NovaClient
|
||||||
from watcher.common import utils
|
from watcher.common import utils
|
||||||
from watcher.tests import base
|
from watcher.tests import base
|
||||||
|
|
||||||
|
|
||||||
class TestNovaWrapper(base.TestCase):
|
class TestNovaClient(base.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestNovaWrapper, self).setUp()
|
super(TestNovaClient, self).setUp()
|
||||||
self.instance_uuid = "fb5311b7-37f3-457e-9cde-6494a3c59bfe"
|
self.instance_uuid = "fb5311b7-37f3-457e-9cde-6494a3c59bfe"
|
||||||
self.source_hypervisor = "ldev-indeedsrv005"
|
self.source_hypervisor = "ldev-indeedsrv005"
|
||||||
self.destination_hypervisor = "ldev-indeedsrv006"
|
self.destination_hypervisor = "ldev-indeedsrv006"
|
||||||
@@ -43,38 +43,38 @@ class TestNovaWrapper(base.TestCase):
|
|||||||
@mock.patch.object(ksclient, "Client", mock.Mock())
|
@mock.patch.object(ksclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
def test_stop_instance(self):
|
def test_stop_instance(self):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
instance_id = utils.generate_uuid()
|
instance_id = utils.generate_uuid()
|
||||||
server = mock.MagicMock()
|
server = mock.MagicMock()
|
||||||
server.id = instance_id
|
server.id = instance_id
|
||||||
setattr(server, 'OS-EXT-STS:vm_state', 'stopped')
|
setattr(server, 'OS-EXT-STS:vm_state', 'stopped')
|
||||||
wrapper.nova.servers = mock.MagicMock()
|
nova_client.nova.servers = mock.MagicMock()
|
||||||
wrapper.nova.servers.find.return_value = server
|
nova_client.nova.servers.find.return_value = server
|
||||||
wrapper.nova.servers.list.return_value = [server]
|
nova_client.nova.servers.list.return_value = [server]
|
||||||
|
|
||||||
result = wrapper.stop_instance(instance_id)
|
result = nova_client.stop_instance(instance_id)
|
||||||
self.assertEqual(result, True)
|
self.assertEqual(result, True)
|
||||||
|
|
||||||
@mock.patch.object(ksclient, "Client", mock.Mock())
|
@mock.patch.object(ksclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
def test_set_host_offline(self):
|
def test_set_host_offline(self):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
host = mock.MagicMock()
|
host = mock.MagicMock()
|
||||||
wrapper.nova.hosts = mock.MagicMock()
|
nova_client.nova.hosts = mock.MagicMock()
|
||||||
wrapper.nova.hosts.get.return_value = host
|
nova_client.nova.hosts.get.return_value = host
|
||||||
result = wrapper.set_host_offline("rennes")
|
result = nova_client.set_host_offline("rennes")
|
||||||
self.assertEqual(result, True)
|
self.assertEqual(result, True)
|
||||||
|
|
||||||
@mock.patch.object(time, 'sleep', mock.Mock())
|
@mock.patch.object(time, 'sleep', mock.Mock())
|
||||||
@mock.patch.object(ksclient, "Client", mock.Mock())
|
@mock.patch.object(ksclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
def test_live_migrate_instance(self):
|
def test_live_migrate_instance(self):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
server = mock.MagicMock()
|
server = mock.MagicMock()
|
||||||
server.id = self.instance_uuid
|
server.id = self.instance_uuid
|
||||||
wrapper.nova.servers = mock.MagicMock()
|
nova_client.nova.servers = mock.MagicMock()
|
||||||
wrapper.nova.servers.list.return_value = [server]
|
nova_client.nova.servers.list.return_value = [server]
|
||||||
instance = wrapper.live_migrate_instance(
|
instance = nova_client.live_migrate_instance(
|
||||||
self.instance_uuid, self.destination_hypervisor
|
self.instance_uuid, self.destination_hypervisor
|
||||||
)
|
)
|
||||||
self.assertIsNotNone(instance)
|
self.assertIsNotNone(instance)
|
||||||
@@ -82,11 +82,11 @@ class TestNovaWrapper(base.TestCase):
|
|||||||
@mock.patch.object(ksclient, "Client", mock.Mock())
|
@mock.patch.object(ksclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
def test_watcher_non_live_migrate_instance_not_found(self):
|
def test_watcher_non_live_migrate_instance_not_found(self):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
wrapper.nova.servers.list.return_value = []
|
nova_client.nova.servers.list.return_value = []
|
||||||
wrapper.nova.servers.find.return_value = None
|
nova_client.nova.servers.find.return_value = None
|
||||||
|
|
||||||
is_success = wrapper.watcher_non_live_migrate_instance(
|
is_success = nova_client.watcher_non_live_migrate_instance(
|
||||||
self.instance_uuid,
|
self.instance_uuid,
|
||||||
self.destination_hypervisor)
|
self.destination_hypervisor)
|
||||||
|
|
||||||
@@ -96,12 +96,12 @@ class TestNovaWrapper(base.TestCase):
|
|||||||
@mock.patch.object(ksclient, "Client", mock.Mock())
|
@mock.patch.object(ksclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
def test_watcher_non_live_migrate_instance_volume(self):
|
def test_watcher_non_live_migrate_instance_volume(self):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
instance = mock.MagicMock(id=self.instance_uuid)
|
instance = mock.MagicMock(id=self.instance_uuid)
|
||||||
setattr(instance, 'OS-EXT-SRV-ATTR:host', self.source_hypervisor)
|
setattr(instance, 'OS-EXT-SRV-ATTR:host', self.source_hypervisor)
|
||||||
wrapper.nova.servers.list.return_value = [instance]
|
nova_client.nova.servers.list.return_value = [instance]
|
||||||
wrapper.nova.servers.find.return_value = instance
|
nova_client.nova.servers.find.return_value = instance
|
||||||
instance = wrapper.watcher_non_live_migrate_instance(
|
instance = nova_client.watcher_non_live_migrate_instance(
|
||||||
self.instance_uuid,
|
self.instance_uuid,
|
||||||
self.destination_hypervisor)
|
self.destination_hypervisor)
|
||||||
self.assertIsNotNone(instance)
|
self.assertIsNotNone(instance)
|
||||||
@@ -110,7 +110,7 @@ class TestNovaWrapper(base.TestCase):
|
|||||||
@mock.patch.object(ksclient, "Client", mock.Mock())
|
@mock.patch.object(ksclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
def test_watcher_non_live_migrate_keep_image(self):
|
def test_watcher_non_live_migrate_keep_image(self):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
instance = mock.MagicMock(id=self.instance_uuid)
|
instance = mock.MagicMock(id=self.instance_uuid)
|
||||||
setattr(instance, 'OS-EXT-SRV-ATTR:host', self.source_hypervisor)
|
setattr(instance, 'OS-EXT-SRV-ATTR:host', self.source_hypervisor)
|
||||||
addresses = mock.MagicMock()
|
addresses = mock.MagicMock()
|
||||||
@@ -122,9 +122,9 @@ class TestNovaWrapper(base.TestCase):
|
|||||||
setattr(instance, 'addresses', addresses)
|
setattr(instance, 'addresses', addresses)
|
||||||
setattr(instance, "os-extended-volumes:volumes_attached",
|
setattr(instance, "os-extended-volumes:volumes_attached",
|
||||||
attached_volumes)
|
attached_volumes)
|
||||||
wrapper.nova.servers.list.return_value = [instance]
|
nova_client.nova.servers.list.return_value = [instance]
|
||||||
wrapper.nova.servers.find.return_value = instance
|
nova_client.nova.servers.find.return_value = instance
|
||||||
instance = wrapper.watcher_non_live_migrate_instance(
|
instance = nova_client.watcher_non_live_migrate_instance(
|
||||||
self.instance_uuid,
|
self.instance_uuid,
|
||||||
self.destination_hypervisor, keep_original_image_name=False)
|
self.destination_hypervisor, keep_original_image_name=False)
|
||||||
self.assertIsNotNone(instance)
|
self.assertIsNotNone(instance)
|
||||||
@@ -134,20 +134,20 @@ class TestNovaWrapper(base.TestCase):
|
|||||||
@mock.patch.object(nvclient, "Client", mock.Mock())
|
@mock.patch.object(nvclient, "Client", mock.Mock())
|
||||||
@mock.patch.object(glclient, "Client")
|
@mock.patch.object(glclient, "Client")
|
||||||
def test_create_image_from_instance(self, m_glance_cls):
|
def test_create_image_from_instance(self, m_glance_cls):
|
||||||
wrapper = NovaWrapper(creds=self.creds, session=self.session)
|
nova_client = NovaClient(creds=self.creds, session=self.session)
|
||||||
instance = mock.MagicMock()
|
instance = mock.MagicMock()
|
||||||
image = mock.MagicMock()
|
image = mock.MagicMock()
|
||||||
setattr(instance, 'OS-EXT-SRV-ATTR:host', self.source_hypervisor)
|
setattr(instance, 'OS-EXT-SRV-ATTR:host', self.source_hypervisor)
|
||||||
wrapper.nova.servers.list.return_value = [instance]
|
nova_client.nova.servers.list.return_value = [instance]
|
||||||
wrapper.nova.servers.find.return_value = instance
|
nova_client.nova.servers.find.return_value = instance
|
||||||
image_uuid = 'fake-image-uuid'
|
image_uuid = 'fake-image-uuid'
|
||||||
wrapper.nova.servers.create_image.return_value = image
|
nova_client.nova.servers.create_image.return_value = image
|
||||||
|
|
||||||
m_glance = mock.MagicMock()
|
m_glance = mock.MagicMock()
|
||||||
m_glance_cls.return_value = m_glance
|
m_glance_cls.return_value = m_glance
|
||||||
|
|
||||||
m_glance.images = {image_uuid: image}
|
m_glance.images = {image_uuid: image}
|
||||||
instance = wrapper.create_image_from_instance(
|
instance = nova_client.create_image_from_instance(
|
||||||
self.instance_uuid, "Cirros"
|
self.instance_uuid, "Cirros"
|
||||||
)
|
)
|
||||||
self.assertIsNone(instance)
|
self.assertIsNone(instance)
|
||||||
Reference in New Issue
Block a user