Fix restore nova instance fail
Currently, restore nova feature is broken, it is because the latest python-novaclient has removed the 'nova.network'. This patch use python-neutronclient instead and will fix the issue. Change-Id: Ifb2ab820a3cfc347d86a1b0b2fac79217752d227 Closes-Bug: #1693437
This commit is contained in:
parent
293131ec8b
commit
5cb2c7a226
@ -38,6 +38,7 @@ class NovaEngine(engine.BackupEngine):
|
||||
self.nova = self.client.create_nova()
|
||||
self.glance = self.client.create_glance()
|
||||
self.cinder = self.client.create_cinder()
|
||||
self.neutron = self.client.create_neutron()
|
||||
self.server_info = None
|
||||
|
||||
@property
|
||||
@ -90,13 +91,13 @@ class NovaEngine(engine.BackupEngine):
|
||||
server_info = metadata.get('server', {})
|
||||
length = int(engine_metadata.get('length'))
|
||||
available_networks = server_info.get('addresses')
|
||||
nova_networks = self.nova.networks.findall()
|
||||
nova_networks = self.neutron.list_networks()['networks']
|
||||
|
||||
net_names = [network for network, _ in
|
||||
available_networks.iteritems()]
|
||||
match_networks = [{"net-id": network.id} for network in
|
||||
match_networks = [{"net-id": network.get('id')} for network in
|
||||
nova_networks
|
||||
if network.to_dict().get('label') in net_names]
|
||||
if network.get('name') in net_names]
|
||||
|
||||
stream = self.stream_image(read_pipe)
|
||||
data = utils.ReSizeStream(stream, length, 1)
|
||||
|
@ -20,6 +20,7 @@ from cinderclient import client as cinder_client
|
||||
from glanceclient import client as glance_client
|
||||
from keystoneauth1 import loading
|
||||
from keystoneauth1 import session
|
||||
from neutronclient.v2_0 import client as neutron_client
|
||||
from novaclient import client as nova_client
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log
|
||||
@ -38,6 +39,7 @@ class OSClientManager(object):
|
||||
self.glance = None
|
||||
self.nova = None
|
||||
self.cinder = None
|
||||
self.neutron = None
|
||||
self.dry_run = kwargs.pop('dry_run', None)
|
||||
loader = loading.get_plugin_loader(auth_method)
|
||||
# copy the args for swift authentication !
|
||||
@ -69,6 +71,7 @@ class OSClientManager(object):
|
||||
self.compute_version = kwargs.pop('compute_api_version', 2)
|
||||
self.image_version = kwargs.pop('image_api_version', 2)
|
||||
self.volume_version = kwargs.pop('volume_api_version', 2)
|
||||
self.neutron_version = kwargs.pop('neutron_api_version', 2)
|
||||
self.auth = loader.load_from_options(auth_url=auth_url, **kwargs)
|
||||
|
||||
self.sess = session.Session(auth=self.auth, **session_kwargs)
|
||||
@ -82,6 +85,15 @@ class OSClientManager(object):
|
||||
**self.client_kwargs)
|
||||
return self.nova
|
||||
|
||||
def create_neutron(self):
|
||||
"""
|
||||
Use pre-initialized session to create an instance of neutron client.
|
||||
:return: neutronclient instance
|
||||
"""
|
||||
self.neutron = neutron_client.Client(session=self.sess,
|
||||
**self.client_kwargs)
|
||||
return self.neutron
|
||||
|
||||
def create_glance(self):
|
||||
"""
|
||||
Use pre-initialized session to create an instance of glance client.
|
||||
@ -165,6 +177,15 @@ class OSClientManager(object):
|
||||
self.nova = self.create_nova()
|
||||
return self.nova
|
||||
|
||||
def get_neutron(self):
|
||||
"""
|
||||
Get neutronclient instance
|
||||
:return: neutronclient instance
|
||||
"""
|
||||
if not self.neutron:
|
||||
self.neutron = self.create_neutron()
|
||||
return self.neutron
|
||||
|
||||
def get_glance(self):
|
||||
"""
|
||||
Get glanceclient instance
|
||||
|
@ -44,6 +44,9 @@ class TestOsClients(unittest.TestCase):
|
||||
def test_create_nova(self):
|
||||
self.client_manager.create_nova()
|
||||
|
||||
def test_create_neutron(self):
|
||||
self.client_manager.create_neutron()
|
||||
|
||||
def test_dry_run(self):
|
||||
osclients.DryRunSwiftclientConnectionWrapper(mock.Mock())
|
||||
|
||||
@ -53,8 +56,11 @@ class TestOsClients(unittest.TestCase):
|
||||
def test_get_swift(self):
|
||||
self.client_manager.get_swift()
|
||||
|
||||
def get_glance(self):
|
||||
def test_get_glance(self):
|
||||
self.client_manager.get_glance()
|
||||
|
||||
def get_nova(self):
|
||||
def test_get_nova(self):
|
||||
self.client_manager.get_nova()
|
||||
|
||||
def test_get_neutron(self):
|
||||
self.client_manager.get_neutron()
|
||||
|
@ -8,6 +8,7 @@ python-cinderclient>=2.0.1 # Apache-2.0
|
||||
python-glanceclient>=2.5.0 # Apache-2.0
|
||||
python-keystoneclient>=3.8.0 # Apache-2.0
|
||||
python-novaclient>=7.1.0 # Apache-2.0
|
||||
python-neutronclient>=5.1.0 # Apache-2.0
|
||||
python-freezerclient>=1.3.0 # Apache-2.0
|
||||
oslo.utils>=3.20.0 # Apache-2.0
|
||||
oslo.log>=3.22.0 # Apache-2.0
|
||||
|
Loading…
Reference in New Issue
Block a user