summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-09-09 04:57:10 +0000
committerGerrit Code Review <review@openstack.org>2012-09-09 04:57:10 +0000
commit63f04675f5a50d589eff58c221eda875fc7c6a54 (patch)
tree7523eefb42c5e26eae655fbaebf2087678c96740
parent3c4d097a6b88071339f075f4ad3234f36d9371d6 (diff)
parent85923aa53d9b0aa3bba9082d8e0b5046a57f502e (diff)
Merge "Add Server Detail and Metadata tests"
-rw-r--r--doc/api_samples/server-detail-get-resp.json56
-rw-r--r--doc/api_samples/server-detail-get-resp.xml21
-rw-r--r--doc/api_samples/server-metadata-all-req.json5
-rw-r--r--doc/api_samples/server-metadata-all-req.xml5
-rw-r--r--doc/api_samples/server-metadata-all-resp.json5
-rw-r--r--doc/api_samples/server-metadata-all-resp.xml4
-rw-r--r--doc/api_samples/server-metadata-req.json5
-rw-r--r--doc/api_samples/server-metadata-req.xml3
-rw-r--r--doc/api_samples/server-metadata-resp.json5
-rw-r--r--doc/api_samples/server-metadata-resp.xml2
-rw-r--r--nova/tests/integrated/api_samples/server-detail-get-resp.json.tpl56
-rw-r--r--nova/tests/integrated/api_samples/server-detail-get-resp.xml.tpl21
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-all-req.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-all-req.xml.tpl5
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-all-resp.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-all-resp.xml.tpl5
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-req.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-req.xml.tpl3
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-resp.json.tpl5
-rw-r--r--nova/tests/integrated/api_samples/server-metadata-resp.xml.tpl3
-rw-r--r--nova/tests/integrated/test_api_samples.py97
21 files changed, 319 insertions, 2 deletions
diff --git a/doc/api_samples/server-detail-get-resp.json b/doc/api_samples/server-detail-get-resp.json
new file mode 100644
index 000000000..3ea61531e
--- /dev/null
+++ b/doc/api_samples/server-detail-get-resp.json
@@ -0,0 +1,56 @@
+{
+ "servers": [
+ {
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {
+ "private": [
+ {
+ "addr": "192.168.0.3",
+ "version": 4
+ }
+ ]
+ },
+ "created": "2012-09-07T16:56:37Z",
+ "flavor": {
+ "id": "1",
+ "links": [
+ {
+ "href": "http://openstack.example.com/openstack/flavors/1",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "16d193736a5cfdb60c697ca27ad071d6126fa13baeb670fc9d10645e",
+ "id": "05184ba3-00ba-4fbc-b7a2-03b62b884931",
+ "image": {
+ "id": "70a599e0-31e7-49b7-b260-868f441e862b",
+ "links": [
+ {
+ "href": "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "links": [
+ {
+ "href": "http://openstack.example.com/v2/openstack/servers/05184ba3-00ba-4fbc-b7a2-03b62b884931",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack.example.com/openstack/servers/05184ba3-00ba-4fbc-b7a2-03b62b884931",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {
+ "My Server Name": "Apache1"
+ },
+ "name": "new-server-test",
+ "progress": 0,
+ "status": "ACTIVE",
+ "tenant_id": "openstack",
+ "updated": "2012-09-07T16:56:37Z",
+ "user_id": "fake"
+ }
+ ]
+} \ No newline at end of file
diff --git a/doc/api_samples/server-detail-get-resp.xml b/doc/api_samples/server-detail-get-resp.xml
new file mode 100644
index 000000000..83bcf0f79
--- /dev/null
+++ b/doc/api_samples/server-detail-get-resp.xml
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<servers xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <server status="ACTIVE" updated="2012-09-07T17:11:46Z" hostId="1b3afbff40723a9649091142a647b83eb6e5b49973239cdeb3d1973c" name="new-server-test" created="2012-09-07T17:11:45Z" userId="fake" tenantId="openstack" accessIPv4="" accessIPv6="" progress="0" id="7c3c0f79-343e-4b99-93bc-2ade47641e64">
+ <image id="70a599e0-31e7-49b7-b260-868f441e862b">
+ <atom:link href="http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b" rel="bookmark"/>
+ </image>
+ <flavor id="1">
+ <atom:link href="http://openstack.example.com/openstack/flavors/1" rel="bookmark"/>
+ </flavor>
+ <metadata>
+ <meta key="My Server Name">Apache1</meta>
+ </metadata>
+ <addresses>
+ <network id="private">
+ <ip version="4" addr="192.168.0.3"/>
+ </network>
+ </addresses>
+ <atom:link href="http://openstack.example.com/v2/openstack/servers/7c3c0f79-343e-4b99-93bc-2ade47641e64" rel="self"/>
+ <atom:link href="http://openstack.example.com/openstack/servers/7c3c0f79-343e-4b99-93bc-2ade47641e64" rel="bookmark"/>
+ </server>
+</servers> \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-all-req.json b/doc/api_samples/server-metadata-all-req.json
new file mode 100644
index 000000000..03925e4a4
--- /dev/null
+++ b/doc/api_samples/server-metadata-all-req.json
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "Foo Value"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-all-req.xml b/doc/api_samples/server-metadata-all-req.xml
new file mode 100644
index 000000000..72811e302
--- /dev/null
+++ b/doc/api_samples/server-metadata-all-req.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <meta key="foo">Foo Value</meta>
+</metadata> \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-all-resp.json b/doc/api_samples/server-metadata-all-resp.json
new file mode 100644
index 000000000..81cd4eb94
--- /dev/null
+++ b/doc/api_samples/server-metadata-all-resp.json
@@ -0,0 +1,5 @@
+{
+ "metadata": {
+ "foo": "Foo Value"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-all-resp.xml b/doc/api_samples/server-metadata-all-resp.xml
new file mode 100644
index 000000000..55c949c57
--- /dev/null
+++ b/doc/api_samples/server-metadata-all-resp.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <meta key="foo">Foo Value</meta>
+</metadata> \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-req.json b/doc/api_samples/server-metadata-req.json
new file mode 100644
index 000000000..7124bb237
--- /dev/null
+++ b/doc/api_samples/server-metadata-req.json
@@ -0,0 +1,5 @@
+{
+ "meta" : {
+ "foo" : "Bar Value"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-req.xml b/doc/api_samples/server-metadata-req.xml
new file mode 100644
index 000000000..f237b2b36
--- /dev/null
+++ b/doc/api_samples/server-metadata-req.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<meta xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">Bar Value</meta> \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-resp.json b/doc/api_samples/server-metadata-resp.json
new file mode 100644
index 000000000..802b37d7f
--- /dev/null
+++ b/doc/api_samples/server-metadata-resp.json
@@ -0,0 +1,5 @@
+{
+ "meta": {
+ "foo": "Bar Value"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/server-metadata-resp.xml b/doc/api_samples/server-metadata-resp.xml
new file mode 100644
index 000000000..c01e16a47
--- /dev/null
+++ b/doc/api_samples/server-metadata-resp.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<meta xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">Bar Value</meta> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/server-detail-get-resp.json.tpl b/nova/tests/integrated/api_samples/server-detail-get-resp.json.tpl
new file mode 100644
index 000000000..921bfdf88
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-detail-get-resp.json.tpl
@@ -0,0 +1,56 @@
+{
+ "servers": [
+ {
+ "accessIPv4": "",
+ "accessIPv6": "",
+ "addresses": {
+ "private": [
+ {
+ "addr": "%(ip)s",
+ "version": 4
+ }
+ ]
+ },
+ "created": "%(timestamp)s",
+ "flavor": {
+ "id": "1",
+ "links": [
+ {
+ "href": "%(host)s/openstack/flavors/1",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "hostId": "%(hostid)s",
+ "id": "%(uuid)s",
+ "image": {
+ "id": "%(uuid)s",
+ "links": [
+ {
+ "href": "%(host)s/openstack/images/%(uuid)s",
+ "rel": "bookmark"
+ }
+ ]
+ },
+ "links": [
+ {
+ "href": "%(host)s/v2/openstack/servers/%(uuid)s",
+ "rel": "self"
+ },
+ {
+ "href": "%(host)s/openstack/servers/%(uuid)s",
+ "rel": "bookmark"
+ }
+ ],
+ "metadata": {
+ "My Server Name": "Apache1"
+ },
+ "name": "new-server-test",
+ "progress": 0,
+ "status": "ACTIVE",
+ "tenant_id": "openstack",
+ "updated": "%(timestamp)s",
+ "user_id": "fake"
+ }
+ ]
+}
diff --git a/nova/tests/integrated/api_samples/server-detail-get-resp.xml.tpl b/nova/tests/integrated/api_samples/server-detail-get-resp.xml.tpl
new file mode 100644
index 000000000..4465f68d7
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-detail-get-resp.xml.tpl
@@ -0,0 +1,21 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<servers xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <server status="ACTIVE" updated="%(timestamp)s" hostId="%(hostid)s" name="new-server-test" created="%(timestamp)s" userId="fake" tenantId="openstack" accessIPv4="" accessIPv6="" progress="0" id="%(id)s">
+ <image id="%(uuid)s">
+ <atom:link href="%(host)s/openstack/images/%(uuid)s" rel="bookmark"/>
+ </image>
+ <flavor id="1">
+ <atom:link href="%(host)s/openstack/flavors/1" rel="bookmark"/>
+ </flavor>
+ <metadata>
+ <meta key="My Server Name">Apache1</meta>
+ </metadata>
+ <addresses>
+ <network id="private">
+ <ip version="4" addr="%(ip)s"/>
+ </network>
+ </addresses>
+ <atom:link href="%(host)s/v2/openstack/servers/%(uuid)s" rel="self"/>
+ <atom:link href="%(host)s/openstack/servers/%(uuid)s" rel="bookmark"/>
+ </server>
+</servers>
diff --git a/nova/tests/integrated/api_samples/server-metadata-all-req.json.tpl b/nova/tests/integrated/api_samples/server-metadata-all-req.json.tpl
new file mode 100644
index 000000000..2278d2afd
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-all-req.json.tpl
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/server-metadata-all-req.xml.tpl b/nova/tests/integrated/api_samples/server-metadata-all-req.xml.tpl
new file mode 100644
index 000000000..e74270673
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-all-req.xml.tpl
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <meta key="foo">%(value)s</meta>
+</metadata>
diff --git a/nova/tests/integrated/api_samples/server-metadata-all-resp.json.tpl b/nova/tests/integrated/api_samples/server-metadata-all-resp.json.tpl
new file mode 100644
index 000000000..2278d2afd
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-all-resp.json.tpl
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/server-metadata-all-resp.xml.tpl b/nova/tests/integrated/api_samples/server-metadata-all-resp.xml.tpl
new file mode 100644
index 000000000..e74270673
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-all-resp.xml.tpl
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <meta key="foo">%(value)s</meta>
+</metadata>
diff --git a/nova/tests/integrated/api_samples/server-metadata-req.json.tpl b/nova/tests/integrated/api_samples/server-metadata-req.json.tpl
new file mode 100644
index 000000000..35872e95f
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-req.json.tpl
@@ -0,0 +1,5 @@
+{
+ "meta" : {
+ "foo" : "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/server-metadata-req.xml.tpl b/nova/tests/integrated/api_samples/server-metadata-req.xml.tpl
new file mode 100644
index 000000000..fa9d6ad48
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-req.xml.tpl
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<meta xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">%(value)s</meta>
diff --git a/nova/tests/integrated/api_samples/server-metadata-resp.json.tpl b/nova/tests/integrated/api_samples/server-metadata-resp.json.tpl
new file mode 100644
index 000000000..85d69ec95
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-resp.json.tpl
@@ -0,0 +1,5 @@
+{
+ "meta": {
+ "foo": "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/server-metadata-resp.xml.tpl b/nova/tests/integrated/api_samples/server-metadata-resp.xml.tpl
new file mode 100644
index 000000000..fa9d6ad48
--- /dev/null
+++ b/nova/tests/integrated/api_samples/server-metadata-resp.xml.tpl
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<meta xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">%(value)s</meta>
diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py
index 6f103f6c2..3786e2975 100644
--- a/nova/tests/integrated/test_api_samples.py
+++ b/nova/tests/integrated/test_api_samples.py
@@ -157,6 +157,10 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
if match.groups():
matched_value = match.groups()[0]
else:
+ if isinstance(expected, basestring):
+ # NOTE(danms): Ignore whitespace in this comparison
+ expected = expected.strip()
+ result = result.strip()
if expected != result:
raise NoMatch(_('Values do not match:\n'
'%(expected)s\n%(result)s') % locals())
@@ -217,6 +221,9 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
def _do_put(self, url, name, subs):
return self._do_post(url, name, subs, method='PUT')
+ def _do_delete(self, url):
+ return self._get_response(url, 'DELETE')
+
class VersionsSampleJsonTest(ApiSampleTestBase):
def test_servers_get(self):
@@ -229,8 +236,8 @@ class VersionsSampleXmlTest(VersionsSampleJsonTest):
ctype = 'xml'
-class ServersSampleJsonTest(ApiSampleTestBase):
- def test_servers_post(self):
+class ServersSampleBase(ApiSampleTestBase):
+ def _post_server(self):
subs = {
'image_id': fake.get_valid_image_id(),
'host': self._get_host(),
@@ -240,6 +247,11 @@ class ServersSampleJsonTest(ApiSampleTestBase):
subs = self._get_regexes()
return self._verify_response('server-post-resp', subs, response)
+
+class ServersSampleJsonTest(ServersSampleBase):
+ def test_servers_post(self):
+ return self._post_server()
+
def test_servers_get(self):
uuid = self.test_servers_post()
response = self._do_get('servers/%s' % uuid)
@@ -252,6 +264,20 @@ class ServersSampleXmlTest(ServersSampleJsonTest):
ctype = 'xml'
+class ServersDetailJsonTest(ServersSampleBase):
+ def test_servers_detail_get(self):
+ uuid = self._post_server()
+ response = self._do_get('servers/detail')
+ self.assertEqual(response.status, 200)
+ subs = self._get_regexes()
+ subs['hostid'] = '[a-f0-9]+'
+ return self._verify_response('server-detail-get-resp', subs, response)
+
+
+class ServersDetailXmlTest(ServersDetailJsonTest):
+ ctype = 'xml'
+
+
class ServersSampleAllExtensionJsonTest(ServersSampleJsonTest):
all_extensions = True
@@ -260,6 +286,73 @@ class ServersSampleAllExtensionXmlTest(ServersSampleXmlTest):
all_extensions = True
+class ServersMetadataJsonTest(ServersSampleBase):
+ def _create_and_set(self, subs):
+ uuid = self._post_server()
+ response = self._do_put('servers/%s/metadata' % uuid,
+ 'server-metadata-all-req',
+ subs)
+ self.assertEqual(response.status, 200)
+ self._verify_response('server-metadata-all-resp', subs, response)
+
+ return uuid
+
+ def test_metadata_put_all(self):
+ """Test setting all metadata for a server"""
+ subs = {'value': 'Foo Value'}
+ return self._create_and_set(subs)
+
+ def test_metadata_post_all(self):
+ """Test updating all metadata for a server"""
+ subs = {'value': 'Foo Value'}
+ uuid = self._create_and_set(subs)
+ subs['value'] = 'Bar Value'
+ response = self._do_post('servers/%s/metadata' % uuid,
+ 'server-metadata-all-req',
+ subs)
+ self.assertEqual(response.status, 200)
+ self._verify_response('server-metadata-all-resp', subs, response)
+
+ def test_metadata_get_all(self):
+ """Test getting all metadata for a server"""
+ subs = {'value': 'Foo Value'}
+ uuid = self._create_and_set(subs)
+ response = self._do_get('servers/%s/metadata' % uuid)
+ self.assertEqual(response.status, 200)
+ self._verify_response('server-metadata-all-resp', subs, response)
+
+ def test_metadata_put(self):
+ """Test putting an individual metadata item for a server"""
+ subs = {'value': 'Foo Value'}
+ uuid = self._create_and_set(subs)
+ subs['value'] = 'Bar Value'
+ response = self._do_put('servers/%s/metadata/foo' % uuid,
+ 'server-metadata-req',
+ subs)
+ self.assertEqual(response.status, 200)
+ return self._verify_response('server-metadata-resp', subs, response)
+
+ def test_metadata_get(self):
+ """Test getting an individual metadata item for a server"""
+ subs = {'value': 'Foo Value'}
+ uuid = self._create_and_set(subs)
+ response = self._do_get('servers/%s/metadata/foo' % uuid)
+ self.assertEqual(response.status, 200)
+ return self._verify_response('server-metadata-resp', subs, response)
+
+ def test_metadata_delete(self):
+ """Test deleting an individual metadata item for a server"""
+ subs = {'value': 'Foo Value'}
+ uuid = self._create_and_set(subs)
+ response = self._do_delete('servers/%s/metadata/foo' % uuid)
+ self.assertEqual(response.status, 204)
+ self.assertEqual(response.read(), '')
+
+
+class ServersMetadataXmlTest(ServersMetadataJsonTest):
+ ctype = 'xml'
+
+
class ExtensionsSampleJsonTest(ApiSampleTestBase):
all_extensions = True