From dda508ec6f1bcf1c08502f509ed5701433baceec Mon Sep 17 00:00:00 2001 From: "Mauro S. M. Rodrigues" Date: Wed, 19 Sep 2012 10:07:49 -0400 Subject: Add api samples to cloudpipe extension Change-Id: I0c9d5ac191c9c9dc6c74f955857aebf7c1952b94 --- .../os-cloudpipe/cloud-pipe-create-req.json.tpl | 5 +++ .../os-cloudpipe/cloud-pipe-create-req.xml.tpl | 3 ++ .../os-cloudpipe/cloud-pipe-create-resp.json.tpl | 3 ++ .../os-cloudpipe/cloud-pipe-create-resp.xml.tpl | 3 ++ .../os-cloudpipe/cloud-pipe-get-resp.json.tpl | 13 ++++++ .../os-cloudpipe/cloud-pipe-get-resp.xml.tpl | 12 ++++++ nova/tests/integrated/test_api_samples.py | 48 ++++++++++++++++++++++ 7 files changed, 87 insertions(+) create mode 100644 nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl create mode 100644 nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl create mode 100644 nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl create mode 100644 nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl create mode 100644 nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl create mode 100644 nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl (limited to 'nova') diff --git a/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl new file mode 100644 index 000000000..c8fc75995 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl @@ -0,0 +1,5 @@ +{ + "cloudpipe": { + "project_id": "%(project_id)s" + } +} diff --git a/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl new file mode 100644 index 000000000..b0a60b896 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl @@ -0,0 +1,3 @@ + diff --git a/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl new file mode 100644 index 000000000..6aa2ff60e --- /dev/null +++ b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl @@ -0,0 +1,3 @@ +{ + "instance_id": "%(id)s" +} diff --git a/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl new file mode 100644 index 000000000..63064cc51 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl @@ -0,0 +1,3 @@ + + %(uuid)s + diff --git a/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl new file mode 100644 index 000000000..cec85fc5c --- /dev/null +++ b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl @@ -0,0 +1,13 @@ +{ + "cloudpipes": [ + { + "created_at": "%(timestamp)s", + "instance_id": "%(uuid)s", + "internal_ip": "%(ip)s", + "project_id": "%(project_id)s", + "public_ip": "%(ip)s", + "public_port": 22, + "state": "down" + } + ] +} diff --git a/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl new file mode 100644 index 000000000..417ca3305 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl @@ -0,0 +1,12 @@ + + + + %(ip)s + %(timestamp)s + 22 + down + %(uuid)s + %(ip)s + %(project_id)s + + diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py index df239db2a..d89173d99 100644 --- a/nova/tests/integrated/test_api_samples.py +++ b/nova/tests/integrated/test_api_samples.py @@ -20,8 +20,10 @@ import uuid from lxml import etree +from nova.cloudpipe.pipelib import CloudPipe from nova import context from nova import flags +from nova.network.manager import NetworkManager from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common.log import logging @@ -987,3 +989,49 @@ class VirtualInterfacesJsonTest(ServersSampleBase): class VirtualInterfacesXmlTest(VirtualInterfacesJsonTest): ctype = 'xml' + + +class CloudPipeSampleJsonTest(ApiSampleTestBase): + extension_name = "nova.api.openstack.compute.contrib.cloudpipe.Cloudpipe" + + def setUp(self): + super(CloudPipeSampleJsonTest, self).setUp() + + def get_user_data(self, project_id): + """Stub method to generate user data for cloudpipe tests""" + return "VVNFUiBEQVRB\n" + + def network_api_get(self, context, network_uuid): + """Stub to get a valid network and its information""" + return {'vpn_public_address': '127.0.0.1', + 'vpn_public_port': 22} + + self.stubs.Set(CloudPipe, 'get_encoded_zip', get_user_data) + self.stubs.Set(NetworkManager, "get_network", network_api_get) + + def test_cloud_pipe_create(self): + """Get api samples of cloud pipe extension creation""" + FLAGS.vpn_image_id = fake.get_valid_image_id() + project = {'project_id': 'cloudpipe-' + str(uuid.uuid4())} + response = self._do_post('os-cloudpipe', 'cloud-pipe-create-req', + project) + self.assertEqual(response.status, 200) + subs = self._get_regexes() + subs.update(project) + subs['image_id'] = FLAGS.vpn_image_id + self._verify_response('cloud-pipe-create-resp', subs, response) + return project + + def test_cloud_pipe_list(self): + """Get api samples of cloud pipe extension get request""" + project = self.test_cloud_pipe_create() + response = self._do_get('os-cloudpipe') + self.assertEqual(response.status, 200) + subs = self._get_regexes() + subs.update(project) + subs['image_id'] = FLAGS.vpn_image_id + return self._verify_response('cloud-pipe-get-resp', subs, response) + + +class CloudPipeSampleXmlTest(CloudPipeSampleJsonTest): + ctype = "xml" -- cgit