summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorMauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>2012-09-19 10:07:49 -0400
committerMauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>2012-09-28 10:03:16 -0400
commitdda508ec6f1bcf1c08502f509ed5701433baceec (patch)
treeb29e75ec8262d3efe4fd70610c562f0e9637b1fa /nova
parent2ba27f66cf14e1cb111ebc93d094c6e77c55245f (diff)
downloadnova-dda508ec6f1bcf1c08502f509ed5701433baceec.tar.gz
nova-dda508ec6f1bcf1c08502f509ed5701433baceec.tar.xz
nova-dda508ec6f1bcf1c08502f509ed5701433baceec.zip
Add api samples to cloudpipe extension
Change-Id: I0c9d5ac191c9c9dc6c74f955857aebf7c1952b94
Diffstat (limited to 'nova')
-rw-r--r--nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-req.xml.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.json.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-create-resp.xml.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.json.tpl13
-rw-r--r--nova/tests/integrated/api_samples/os-cloudpipe/cloud-pipe-get-resp.xml.tpl12
-rw-r--r--nova/tests/integrated/test_api_samples.py48
7 files changed, 87 insertions, 0 deletions
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 @@
+<cloudpipe
+ project_id="%(project_id)s"
+/>
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 @@
+<cloudpipe>
+ <instance_id>%(uuid)s</instance_id>
+</cloudpipe>
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 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<cloudpipes>
+ <cloudpipe>
+ <public_ip>%(ip)s</public_ip>
+ <created_at>%(timestamp)s</created_at>
+ <public_port>22</public_port>
+ <state>down</state>
+ <instance_id>%(uuid)s</instance_id>
+ <internal_ip>%(ip)s</internal_ip>
+ <project_id>%(project_id)s</project_id>
+ </cloudpipe>
+</cloudpipes>
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"