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 | 5 +++ .../os-cloudpipe/cloud-pipe-create-req.xml | 3 ++ .../os-cloudpipe/cloud-pipe-create-resp.json | 5 +++ .../os-cloudpipe/cloud-pipe-create-resp.xml | 4 ++ .../os-cloudpipe/cloud-pipe-get-resp.json | 15 +++++++ .../os-cloudpipe/cloud-pipe-get-resp.xml | 12 ++++++ .../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 ++++++++++++++++++++++ 13 files changed, 131 insertions(+) create mode 100644 doc/api_samples/os-cloudpipe/cloud-pipe-create-req.json create mode 100644 doc/api_samples/os-cloudpipe/cloud-pipe-create-req.xml create mode 100644 doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.json create mode 100644 doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml create mode 100644 doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.json create mode 100644 doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml 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 diff --git a/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.json b/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.json new file mode 100644 index 000000000..dd1cf348c --- /dev/null +++ b/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.json @@ -0,0 +1,5 @@ +{ + "cloudpipe": { + "project_id": "cloudpipe-059f21e3-c20e-4efc-9e7a-eba2ab3c6f9a" + } +} \ No newline at end of file diff --git a/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.xml b/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.xml new file mode 100644 index 000000000..e80a9113d --- /dev/null +++ b/doc/api_samples/os-cloudpipe/cloud-pipe-create-req.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.json b/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.json new file mode 100644 index 000000000..8c555bf99 --- /dev/null +++ b/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.json @@ -0,0 +1,5 @@ +{ + "cloudpipe": { + "instance_id": "72afecab-24b0-437e-b1d9-88a83be701b3" + } +} \ No newline at end of file diff --git a/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml b/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml new file mode 100644 index 000000000..fafa90a3b --- /dev/null +++ b/doc/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml @@ -0,0 +1,4 @@ + + + 1a17f615-343b-430f-976a-457c029eddb7 + \ No newline at end of file diff --git a/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.json b/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.json new file mode 100644 index 000000000..9efac48bb --- /dev/null +++ b/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.json @@ -0,0 +1,15 @@ +{ + "cloudpipes": [ + { + "cloudpipe": { + "created_at": "2012-09-25T18:18:55Z", + "instance_id": "72afecab-24b0-437e-b1d9-88a83be701b3", + "internal_ip": "192.168.0.3", + "project_id": "cloudpipe-059f21e3-c20e-4efc-9e7a-eba2ab3c6f9a", + "public_ip": "127.0.0.1", + "public_port": 22, + "state": "down" + } + } + ] +} \ No newline at end of file diff --git a/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml b/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml new file mode 100644 index 000000000..6981aa5bd --- /dev/null +++ b/doc/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml @@ -0,0 +1,12 @@ + + + + 127.0.0.1 + 2012-09-25T18:18:49Z + 22 + down + 1a17f615-343b-430f-976a-457c029eddb7 + 192.168.0.3 + cloudpipe-6405f2ca-caf9-493b-a1f6-e55f595d75ab + + \ No newline at end of file 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