From a1aa75383fd4f04d690c547e23f79f51662f6608 Mon Sep 17 00:00:00 2001 From: isethi Date: Mon, 23 Jul 2012 15:36:13 +0000 Subject: Implements config_drive as extension Adding config drive as an extension allows users to turn it off in case they do not want to use it. Config drive was not intended to be a part of the core functionality. Fixes bug 833331 Change-Id: Icf4b5a21d8cc9df0f140a1a87908ff48c447004b --- .../openstack/compute/contrib/test_config_drive.py | 52 ++++++++++++++++++++++ nova/tests/api/openstack/compute/test_servers.py | 9 ---- nova/tests/api/openstack/fakes.py | 3 +- nova/tests/policy.json | 1 + 4 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 nova/tests/api/openstack/compute/contrib/test_config_drive.py (limited to 'nova/tests') diff --git a/nova/tests/api/openstack/compute/contrib/test_config_drive.py b/nova/tests/api/openstack/compute/contrib/test_config_drive.py new file mode 100644 index 000000000..c246003e5 --- /dev/null +++ b/nova/tests/api/openstack/compute/contrib/test_config_drive.py @@ -0,0 +1,52 @@ +# Copyright 2012 OpenStack LLC. +# All Rights Reserved. +# +# 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. + +import webob + +from nova.api.openstack.compute.contrib import config_drive +from nova import db +from nova.openstack.common import jsonutils +from nova import test +from nova.tests.api.openstack import fakes +import nova.tests.image.fake + + +class ConfigDriveTest(test.TestCase): + + def setUp(self): + super(ConfigDriveTest, self).setUp() + self.Controller = config_drive.Controller() + fakes.stub_out_networking(self.stubs) + fakes.stub_out_rate_limiting(self.stubs) + nova.tests.image.fake.stub_out_image_service(self.stubs) + + def test_show(self): + self.stubs.Set(db, 'instance_get', + fakes.fake_instance_get()) + req = webob.Request.blank('/v2/fake/servers/1') + req.headers['Content-Type'] = 'application/json' + response = req.get_response(fakes.wsgi_app()) + self.assertEquals(response.status_int, 200) + res_dict = jsonutils.loads(response.body) + self.assertTrue('config_drive' in res_dict['server']) + + def test_detail_servers(self): + self.stubs.Set(db, 'instance_get', + fakes.fake_instance_get()) + req = fakes.HTTPRequest.blank('/v2/fake/servers/detail') + res = req.get_response(fakes.wsgi_app()) + server_dicts = jsonutils.loads(res.body)['servers'] + for server_dict in server_dicts: + self.asserTrue('config_drive' in server_dict) diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py index 904882bb8..82f5b11a9 100644 --- a/nova/tests/api/openstack/compute/test_servers.py +++ b/nova/tests/api/openstack/compute/test_servers.py @@ -200,7 +200,6 @@ class ServersControllerTest(test.TestCase): "metadata": { "seq": "1", }, - "config_drive": None, "links": [ { "rel": "self", @@ -267,7 +266,6 @@ class ServersControllerTest(test.TestCase): "metadata": { "seq": "1", }, - "config_drive": None, "links": [ { "rel": "self", @@ -337,7 +335,6 @@ class ServersControllerTest(test.TestCase): "metadata": { "seq": "1", }, - "config_drive": None, "links": [ { "rel": "self", @@ -3005,7 +3002,6 @@ class ServersViewBuilderTest(test.TestCase): ] }, "metadata": {}, - "config_drive": None, "links": [ { "rel": "self", @@ -3073,7 +3069,6 @@ class ServersViewBuilderTest(test.TestCase): ] }, "metadata": {}, - "config_drive": None, "links": [ { "rel": "self", @@ -3217,7 +3212,6 @@ class ServersViewBuilderTest(test.TestCase): ] }, "metadata": {}, - "config_drive": None, "links": [ { "rel": "self", @@ -3278,7 +3272,6 @@ class ServersViewBuilderTest(test.TestCase): ] }, "metadata": {}, - "config_drive": None, "accessIPv4": "1.2.3.4", "accessIPv6": "", "links": [ @@ -3341,7 +3334,6 @@ class ServersViewBuilderTest(test.TestCase): ] }, "metadata": {}, - "config_drive": None, "accessIPv4": "", "accessIPv6": "fead::1234", "links": [ @@ -3408,7 +3400,6 @@ class ServersViewBuilderTest(test.TestCase): ] }, "metadata": {"Open": "Stack"}, - "config_drive": None, "links": [ { "rel": "self", diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py index 20e675a8c..cdc9feea2 100644 --- a/nova/tests/api/openstack/fakes.py +++ b/nova/tests/api/openstack/fakes.py @@ -393,7 +393,7 @@ def stub_instance(id, user_id=None, project_id=None, host=None, flavor_id="1", name=None, key_name='', access_ipv4=None, access_ipv6=None, progress=0, auto_disk_config=False, display_name=None, - include_fake_metadata=True, + include_fake_metadata=True, config_drive=None, power_state=None, nw_cache=None, metadata=None, security_groups=None): @@ -442,6 +442,7 @@ def stub_instance(id, user_id=None, project_id=None, host=None, "launch_index": 0, "key_name": key_name, "key_data": key_data, + "config_drive": config_drive, "vm_state": vm_state or vm_states.BUILDING, "task_state": task_state, "power_state": power_state, diff --git a/nova/tests/policy.json b/nova/tests/policy.json index bed66a7df..6fa0cf4b3 100644 --- a/nova/tests/policy.json +++ b/nova/tests/policy.json @@ -83,6 +83,7 @@ "compute_extension:aggregates": [], "compute_extension:certificates": [], "compute_extension:cloudpipe": [], + "compute_extension:config_drive": [], "compute_extension:console_output": [], "compute_extension:consoles": [], "compute_extension:createserverext": [], -- cgit