Skip to content

Commit 062065c

Browse files
committed
XenAPI Use os-xenapi lib for nova
XenServer has released os-xenapi lib on pypi, this patch is to use os-xenapi in nova project. In this patch, we only change the usage of XenAPI to os-xenapi and fix unit tests. In the next patch, we will delete those unused files. Partially-Implements: blueprint add-os-xenapi-library Depends-On: Ic327135b893a77672fd42af919f47f181e932773 Change-Id: I424dfcd507c4b7fbeea5245cc1c234dec01d5781
1 parent 8e3e9f6 commit 062065c

File tree

12 files changed

+67
-246
lines changed

12 files changed

+67
-246
lines changed

nova/tests/unit/virt/xenapi/image/test_bittorrent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
# under the License.
1515

1616
import mock
17+
from os_xenapi import client
1718
import six
1819

1920
from nova import context
2021
from nova import test
2122
from nova.tests.unit.virt.xenapi import stubs
22-
from nova.virt.xenapi import client
2323
from nova.virt.xenapi import driver as xenapi_conn
2424
from nova.virt.xenapi import fake
2525
from nova.virt.xenapi.image import bittorrent

nova/tests/unit/virt/xenapi/image/test_glance.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import mock
2020
from mox3 import mox
21-
from oslo_log import log as logging
21+
from os_xenapi.client import XenAPI
2222

2323
from nova.compute import utils as compute_utils
2424
from nova import context
@@ -93,9 +93,7 @@ def test_download_image(self):
9393
@mock.patch.object(random, 'shuffle')
9494
@mock.patch.object(time, 'sleep')
9595
@mock.patch.object(compute_utils, 'add_instance_fault_from_exc')
96-
@mock.patch.object(logging.getLogger('nova.virt.xenapi.client.session'),
97-
'debug')
98-
def test_download_image_retry(self, mock_log_debug, mock_fault, mock_sleep,
96+
def test_download_image_retry(self, mock_fault, mock_sleep,
9997
mock_shuffle, mock_make_uuid_stack):
10098
params = self._get_download_params()
10199
self.flags(num_retries=2, group='glance')
@@ -107,16 +105,6 @@ def test_download_image_retry(self, mock_log_debug, mock_fault, mock_sleep,
107105
mock.call('glance.py', 'download_vhd2',
108106
endpoint='http://10.0.0.1:9293',
109107
**params)]
110-
log_calls = [mock.call(mock.ANY,
111-
{'callback_result': 'http://10.0.1.1:9292',
112-
'attempts': 3, 'attempt': 1,
113-
'fn': 'download_vhd2',
114-
'plugin': 'glance.py'}),
115-
mock.call(mock.ANY,
116-
{'callback_result': 'http://10.0.0.1:9293',
117-
'attempts': 3, 'attempt': 2,
118-
'fn': 'download_vhd2',
119-
'plugin': 'glance.py'})]
120108

121109
glance_api_servers = ['10.0.1.1:9292',
122110
'http://10.0.0.1:9293']
@@ -132,7 +120,6 @@ def test_download_image_retry(self, mock_log_debug, mock_fault, mock_sleep,
132120
self.instance, 'fake_image_uuid')
133121

134122
mock_call_plugin_serialized.assert_has_calls(calls)
135-
mock_log_debug.assert_has_calls(log_calls, any_order=True)
136123

137124
self.assertEqual(1, mock_fault.call_count)
138125

@@ -197,21 +184,21 @@ def test_upload_image_retries_then_raises_exception(self):
197184
self.session.call_plugin_serialized('glance.py', 'upload_vhd2',
198185
**params).AndRaise(error)
199186
compute_utils.add_instance_fault_from_exc(self.context, self.instance,
200-
error, (fake.Failure,
187+
error, (XenAPI.Failure,
201188
error,
202189
mox.IgnoreArg()))
203190
time.sleep(0.5)
204191
self.session.call_plugin_serialized('glance.py', 'upload_vhd2',
205192
**params).AndRaise(error)
206193
compute_utils.add_instance_fault_from_exc(self.context, self.instance,
207-
error, (fake.Failure,
194+
error, (XenAPI.Failure,
208195
error,
209196
mox.IgnoreArg()))
210197
time.sleep(1)
211198
self.session.call_plugin_serialized('glance.py', 'upload_vhd2',
212199
**params).AndRaise(error)
213200
compute_utils.add_instance_fault_from_exc(self.context, self.instance,
214-
error, (fake.Failure,
201+
error, (XenAPI.Failure,
215202
error,
216203
mox.IgnoreArg()))
217204
self.mox.ReplayAll()
@@ -234,7 +221,7 @@ def test_upload_image_retries_on_signal_exception(self):
234221
self.session.call_plugin_serialized('glance.py', 'upload_vhd2',
235222
**params).AndRaise(error)
236223
compute_utils.add_instance_fault_from_exc(self.context, self.instance,
237-
error, (fake.Failure,
224+
error, (XenAPI.Failure,
238225
error,
239226
mox.IgnoreArg()))
240227
time.sleep(0.5)
@@ -244,7 +231,7 @@ def test_upload_image_retries_on_signal_exception(self):
244231
self.session.call_plugin_serialized('glance.py', 'upload_vhd2',
245232
**params).AndRaise(error)
246233
compute_utils.add_instance_fault_from_exc(self.context, self.instance,
247-
error, (fake.Failure,
234+
error, (XenAPI.Failure,
248235
error,
249236
mox.IgnoreArg()))
250237
time.sleep(1)

nova/tests/unit/virt/xenapi/image/test_vdi_through_dev.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
import tarfile
1818

1919
import eventlet
20+
from os_xenapi.client import session as xenapi_session
2021
import six
2122

2223
from nova.image import glance
2324
from nova import test
24-
from nova.virt.xenapi.client import session as xenapi_session
2525
from nova.virt.xenapi.image import vdi_through_dev
2626

2727

nova/tests/unit/virt/xenapi/stubs.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@
1919

2020
import fixtures
2121
import mock
22+
from os_xenapi.client import session
23+
from os_xenapi.client import XenAPI
2224
from oslo_serialization import jsonutils
2325
import six
2426

2527
from nova import test
2628
import nova.tests.unit.image.fake
27-
from nova.virt.xenapi.client import session
2829
from nova.virt.xenapi import fake
2930
from nova.virt.xenapi import vm_utils
3031
from nova.virt.xenapi import vmops
@@ -121,7 +122,7 @@ def stubout_fetch_disk_image(stubs, raise_failure=False):
121122
def _fake_fetch_disk_image(context, session, instance, name_label, image,
122123
image_type):
123124
if raise_failure:
124-
raise fake.Failure("Test Exception raised by "
125+
raise XenAPI.Failure("Test Exception raised by "
125126
"fake fetch_image_glance_disk")
126127
elif image_type == vm_utils.ImageType.KERNEL:
127128
filename = "kernel"
@@ -140,15 +141,15 @@ def stubout_create_vm(stubs):
140141
"""Simulates a failure in create_vm."""
141142

142143
def f(*args):
143-
raise fake.Failure("Test Exception raised by fake create_vm")
144+
raise XenAPI.Failure("Test Exception raised by fake create_vm")
144145
stubs.Set(vm_utils, 'create_vm', f)
145146

146147

147148
def stubout_attach_disks(stubs):
148149
"""Simulates a failure in _attach_disks."""
149150

150151
def f(*args):
151-
raise fake.Failure("Test Exception raised by fake _attach_disks")
152+
raise XenAPI.Failure("Test Exception raised by fake _attach_disks")
152153
stubs.Set(vmops.VMOps, '_attach_disks', f)
153154

154155

@@ -187,7 +188,7 @@ def host_call_plugin(self, _1, _2, plugin, method, _5):
187188
def VM_start(self, _1, ref, _2, _3):
188189
vm = fake.get_record('VM', ref)
189190
if vm['power_state'] != 'Halted':
190-
raise fake.Failure(['VM_BAD_POWER_STATE', ref, 'Halted',
191+
raise XenAPI.Failure(['VM_BAD_POWER_STATE', ref, 'Halted',
191192
vm['power_state']])
192193
vm['power_state'] = 'Running'
193194
vm['is_a_template'] = False
@@ -302,15 +303,15 @@ def VDI_introduce(self, _1, uuid, _2, _3, _4, _5,
302303
if rec['uuid'] == uuid:
303304
valid_vdi = True
304305
if not valid_vdi:
305-
raise fake.Failure([['INVALID_VDI', 'session', self._session]])
306+
raise XenAPI.Failure([['INVALID_VDI', 'session', self._session]])
306307

307308

308309
class FakeSessionForVolumeFailedTests(FakeSessionForVolumeTests):
309310
"""Stubs out a XenAPISession for Volume tests: it injects failures."""
310311
def VDI_introduce(self, _1, uuid, _2, _3, _4, _5,
311312
_6, _7, _8, _9, _10, _11):
312313
# This is for testing failure
313-
raise fake.Failure([['INVALID_VDI', 'session', self._session]])
314+
raise XenAPI.Failure([['INVALID_VDI', 'session', self._session]])
314315

315316
def PBD_unplug(self, _1, ref):
316317
rec = fake.get_record('PBD', ref)
@@ -367,14 +368,14 @@ def fake_generate_ephemeral(*args):
367368
class FakeSessionForFailedMigrateTests(FakeSessionForVMTests):
368369
def VM_assert_can_migrate(self, session, vmref, migrate_data,
369370
live, vdi_map, vif_map, options):
370-
raise fake.Failure("XenAPI VM.assert_can_migrate failed")
371+
raise XenAPI.Failure("XenAPI VM.assert_can_migrate failed")
371372

372373
def host_migrate_receive(self, session, hostref, networkref, options):
373-
raise fake.Failure("XenAPI host.migrate_receive failed")
374+
raise XenAPI.Failure("XenAPI host.migrate_receive failed")
374375

375376
def VM_migrate_send(self, session, vmref, migrate_data, islive, vdi_map,
376377
vif_map, options):
377-
raise fake.Failure("XenAPI VM.migrate_send failed")
378+
raise XenAPI.Failure("XenAPI VM.migrate_send failed")
378379

379380

380381
def get_fake_session(error=None):

nova/tests/unit/virt/xenapi/test_agent.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@
1818
import uuid
1919

2020
import mock
21+
from os_xenapi.client import XenAPI
2122

2223
from nova import exception
2324
from nova import test
2425
from nova.virt.xenapi import agent
25-
from nova.virt.xenapi import fake as xenapi_fake
2626

2727

2828
def _get_fake_instance(**kwargs):
@@ -369,7 +369,7 @@ def test_call_agent_success(self, mock_uuid):
369369
def _call_agent_setup(self, session, mock_uuid,
370370
returncode='0', success_codes=None,
371371
exception=None):
372-
session.XenAPI.Failure = xenapi_fake.Failure
372+
session.XenAPI.Failure = XenAPI.Failure
373373
instance = {"uuid": "fake"}
374374

375375
session.VM.get_domid.return_value = "42"
@@ -402,22 +402,22 @@ def test_call_agent_fails_with_timeout(self, mock_uuid):
402402
session = mock.Mock()
403403
self.assertRaises(exception.AgentTimeout, self._call_agent_setup,
404404
session, mock_uuid,
405-
exception=xenapi_fake.Failure(["TIMEOUT:fake"]))
405+
exception=XenAPI.Failure(["TIMEOUT:fake"]))
406406
self._assert_agent_called(session, mock_uuid)
407407

408408
def test_call_agent_fails_with_not_implemented(self, mock_uuid):
409409
session = mock.Mock()
410410
self.assertRaises(exception.AgentNotImplemented,
411411
self._call_agent_setup,
412412
session, mock_uuid,
413-
exception=xenapi_fake.Failure(["NOT IMPLEMENTED:"]))
413+
exception=XenAPI.Failure(["NOT IMPLEMENTED:"]))
414414
self._assert_agent_called(session, mock_uuid)
415415

416416
def test_call_agent_fails_with_other_error(self, mock_uuid):
417417
session = mock.Mock()
418418
self.assertRaises(exception.AgentError, self._call_agent_setup,
419419
session, mock_uuid,
420-
exception=xenapi_fake.Failure(["asdf"]))
420+
exception=XenAPI.Failure(["asdf"]))
421421
self._assert_agent_called(session, mock_uuid)
422422

423423
def test_call_agent_fails_with_returned_error(self, mock_uuid):

nova/tests/unit/virt/xenapi/test_vmops.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
from eventlet import greenthread
2424
import mock
25+
from os_xenapi.client import session as xenapi_session
2526

2627
from nova.compute import power_state
2728
from nova.compute import task_states
@@ -38,7 +39,6 @@
3839
from nova import utils
3940
from nova.virt import fake
4041
from nova.virt.xenapi import agent as xenapi_agent
41-
from nova.virt.xenapi.client import session as xenapi_session
4242
from nova.virt.xenapi import fake as xenapi_fake
4343
from nova.virt.xenapi import vm_utils
4444
from nova.virt.xenapi import vmops

0 commit comments

Comments
 (0)