From c28ed8713e40f35ddef3c93cd99cca0124aa2078 Mon Sep 17 00:00:00 2001 From: Johannes Erdfelt Date: Mon, 13 Aug 2012 18:07:28 +0000 Subject: [PATCH] xenapi: remove unnecessary json decoding of injected_files The API is responsible for decoding JSON an XML content. Also, the code decoded results weren't used since the code below it would use the original data anyway. Also, add a unit test for injected_files in the xenapi driver. Change-Id: Ie96b301b0948f92dd90060eacba0db9ae940b952 --- nova/tests/test_xenapi.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py index 92d3000b3..04049ae70 100644 --- a/nova/tests/test_xenapi.py +++ b/nova/tests/test_xenapi.py @@ -17,6 +17,7 @@ """Test suite for XenAPI.""" import ast +import base64 import contextlib import cPickle as pickle import functools @@ -522,8 +523,11 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): def _test_spawn(self, image_ref, kernel_id, ramdisk_id, instance_type_id="3", os_type="linux", hostname="test", architecture="x86-64", instance_id=1, - check_injection=False, + injected_files=None, check_injection=False, create_record=True, empty_dns=False): + if injected_files is None: + injected_files = [] + # Fake out inject_instance_metadata def fake_inject_instance_metadata(self, instance, vm): pass @@ -554,8 +558,8 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): image_meta = {'id': IMAGE_VHD, 'disk_format': 'vhd'} - self.conn.spawn(self.context, instance, image_meta, [], 'herp', - network_info) + self.conn.spawn(self.context, instance, image_meta, injected_files, + 'herp', network_info) self.create_vm_record(self.conn, os_type, instance['name']) self.check_vm_record(self.conn, check_injection) self.assertTrue(instance.os_type) @@ -774,6 +778,25 @@ class XenAPIVMTestCase(stubs.XenAPITestBase): self.assertEquals(vif_rec['qos_algorithm_params']['kbps'], str(3 * 10 * 1024)) + def test_spawn_injected_files(self): + """Test spawning with injected_files""" + actual_injected_files = [] + + def fake_inject_file(self, method, args): + path = base64.b64decode(args['b64_path']) + contents = base64.b64decode(args['b64_contents']) + actual_injected_files.append((path, contents)) + return jsonutils.dumps({'returncode': '0', 'message': 'success'}) + self.stubs.Set(stubs.FakeSessionForVMTests, + '_plugin_agent_inject_file', fake_inject_file) + + injected_files = [('/tmp/foo', 'foobar')] + self._test_spawn(IMAGE_VHD, None, None, + os_type="linux", architecture="x86-64", + injected_files=injected_files) + self.check_vm_params_for_linux() + self.assertEquals(actual_injected_files, injected_files) + def test_rescue(self): instance = self._create_instance() session = xenapi_conn.XenAPISession('test_url', 'root', 'test_pass')