summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-09-24 19:27:34 +0000
committerGerrit Code Review <review@openstack.org>2013-09-24 19:27:34 +0000
commit220b5a4b21fb014a64fa75d1ac3ee205d720a189 (patch)
treed0accbcd0b233cf7630b0ce4bd156f1b4fda5a92
parent1fdbbcd17a64df1d46f08ddb9d072206dd57ca8c (diff)
parent27775f35dd2737991ad34a67be4ccb9ea7714040 (diff)
downloadnova-220b5a4b21fb014a64fa75d1ac3ee205d720a189.tar.gz
Merge "Adds v3 API samples for ips and server_metadata extensions"
-rw-r--r--doc/v3/api_samples/server-ips/server-ips-network-resp.json10
-rw-r--r--doc/v3/api_samples/server-ips/server-ips-network-resp.xml4
-rw-r--r--doc/v3/api_samples/server-ips/server-ips-resp.json12
-rw-r--r--doc/v3/api_samples/server-ips/server-ips-resp.xml6
-rw-r--r--doc/v3/api_samples/server-ips/server-post-req.json16
-rw-r--r--doc/v3/api_samples/server-ips/server-post-req.xml19
-rw-r--r--doc/v3/api_samples/server-ips/server-post-resp.json16
-rw-r--r--doc/v3/api_samples/server-ips/server-post-resp.xml6
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-all-req.json5
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-all-req.xml5
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-all-resp.json5
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-all-resp.xml4
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-req.json5
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-req.xml3
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-resp.json5
-rw-r--r--doc/v3/api_samples/server-metadata/server-metadata-resp.xml2
-rw-r--r--doc/v3/api_samples/server-metadata/server-post-req.json16
-rw-r--r--doc/v3/api_samples/server-metadata/server-post-req.xml19
-rw-r--r--doc/v3/api_samples/server-metadata/server-post-resp.json16
-rw-r--r--doc/v3/api_samples/server-metadata/server-post-resp.xml6
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.json.tpl10
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.xml.tpl4
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.json.tpl12
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.xml.tpl6
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-post-req.json.tpl16
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-post-req.xml.tpl19
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.json.tpl16
-rw-r--r--nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.xml.tpl6
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.json.tpl5
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.xml.tpl5
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.json.tpl5
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.xml.tpl4
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.json.tpl5
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.xml.tpl2
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.json.tpl5
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.json.tpl16
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.xml.tpl19
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.json.tpl16
-rw-r--r--nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.xml.tpl6
-rw-r--r--nova/tests/integrated/v3/test_server_metadata.py85
-rw-r--r--nova/tests/integrated/v3/test_servers_ips.py40
42 files changed, 484 insertions, 0 deletions
diff --git a/doc/v3/api_samples/server-ips/server-ips-network-resp.json b/doc/v3/api_samples/server-ips/server-ips-network-resp.json
new file mode 100644
index 0000000000..0c13588eb0
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-ips-network-resp.json
@@ -0,0 +1,10 @@
+{
+ "private": [
+ {
+ "addr": "192.168.0.3",
+ "mac_addr": "aa:bb:cc:dd:ee:ff",
+ "type": "fixed",
+ "version": 4
+ }
+ ]
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-ips-network-resp.xml b/doc/v3/api_samples/server-ips/server-ips-network-resp.xml
new file mode 100644
index 0000000000..1577ec4825
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-ips-network-resp.xml
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<network xmlns="http://docs.openstack.org/compute/api/v1.1" id="private">
+ <ip version="4" type="fixed" addr="192.168.0.3" mac_addr="aa:bb:cc:dd:ee:ff"/>
+</network> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-ips-resp.json b/doc/v3/api_samples/server-ips/server-ips-resp.json
new file mode 100644
index 0000000000..bb2ae0ab47
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-ips-resp.json
@@ -0,0 +1,12 @@
+{
+ "addresses": {
+ "private": [
+ {
+ "addr": "192.168.0.3",
+ "mac_addr": "aa:bb:cc:dd:ee:ff",
+ "type": "fixed",
+ "version": 4
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-ips-resp.xml b/doc/v3/api_samples/server-ips/server-ips-resp.xml
new file mode 100644
index 0000000000..5184898e73
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-ips-resp.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<addresses xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <network id="private">
+ <ip version="4" type="fixed" addr="192.168.0.3" mac_addr="aa:bb:cc:dd:ee:ff"/>
+ </network>
+</addresses> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-post-req.json b/doc/v3/api_samples/server-ips/server-post-req.json
new file mode 100644
index 0000000000..d41985a1bc
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-post-req.json
@@ -0,0 +1,16 @@
+{
+ "server" : {
+ "name" : "new-server-test",
+ "image_ref" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
+ "flavor_ref" : "http://openstack.example.com/openstack/flavors/1",
+ "metadata" : {
+ "My Server Name" : "Apache1"
+ },
+ "personality" : [
+ {
+ "path" : "/etc/banner.txt",
+ "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-post-req.xml b/doc/v3/api_samples/server-ips/server-post-req.xml
new file mode 100644
index 0000000000..598839cf6a
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-post-req.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<server xmlns="http://docs.openstack.org/compute/api/v1.1" image_ref="http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b" flavor_ref="http://openstack.example.com/openstack/flavors/1" name="new-server-test">
+ <metadata>
+ <meta key="My Server Name">Apache1</meta>
+ </metadata>
+ <personality>
+ <file path="/etc/banner.txt">
+ ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp
+ dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k
+ IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs
+ c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g
+ QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo
+ ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv
+ dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy
+ c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6
+ b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
+ </file>
+ </personality>
+</server> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-post-resp.json b/doc/v3/api_samples/server-ips/server-post-resp.json
new file mode 100644
index 0000000000..4edce34c63
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-post-resp.json
@@ -0,0 +1,16 @@
+{
+ "server": {
+ "admin_pass": "Ag463BYwnXEf",
+ "id": "0813a7dc-8e97-42df-9634-957109499bf0",
+ "links": [
+ {
+ "href": "http://openstack.example.com/v3/servers/0813a7dc-8e97-42df-9634-957109499bf0",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack.example.com/servers/0813a7dc-8e97-42df-9634-957109499bf0",
+ "rel": "bookmark"
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-ips/server-post-resp.xml b/doc/v3/api_samples/server-ips/server-post-resp.xml
new file mode 100644
index 0000000000..fca0e9c025
--- /dev/null
+++ b/doc/v3/api_samples/server-ips/server-post-resp.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="8fee36b1-43ce-4380-a360-0b03c9571319" admin_pass="t7CaoxDhmBm8">
+ <metadata/>
+ <atom:link href="http://openstack.example.com/v3/servers/8fee36b1-43ce-4380-a360-0b03c9571319" rel="self"/>
+ <atom:link href="http://openstack.example.com/servers/8fee36b1-43ce-4380-a360-0b03c9571319" rel="bookmark"/>
+</server> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-metadata-all-req.json b/doc/v3/api_samples/server-metadata/server-metadata-all-req.json
new file mode 100644
index 0000000000..03925e4a4a
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-metadata-all-req.json
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "Foo Value"
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-metadata-all-req.xml b/doc/v3/api_samples/server-metadata/server-metadata-all-req.xml
new file mode 100644
index 0000000000..72811e3025
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/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/v3/api_samples/server-metadata/server-metadata-all-resp.json b/doc/v3/api_samples/server-metadata/server-metadata-all-resp.json
new file mode 100644
index 0000000000..81cd4eb94a
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-metadata-all-resp.json
@@ -0,0 +1,5 @@
+{
+ "metadata": {
+ "foo": "Foo Value"
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-metadata-all-resp.xml b/doc/v3/api_samples/server-metadata/server-metadata-all-resp.xml
new file mode 100644
index 0000000000..55c949c577
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/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/v3/api_samples/server-metadata/server-metadata-req.json b/doc/v3/api_samples/server-metadata/server-metadata-req.json
new file mode 100644
index 0000000000..b9a8ac2086
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-metadata-req.json
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "Bar Value"
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-metadata-req.xml b/doc/v3/api_samples/server-metadata/server-metadata-req.xml
new file mode 100644
index 0000000000..3f23eeb495
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-metadata-req.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">Bar Value</metadata> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-metadata-resp.json b/doc/v3/api_samples/server-metadata/server-metadata-resp.json
new file mode 100644
index 0000000000..81cd4eb94a
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-metadata-resp.json
@@ -0,0 +1,5 @@
+{
+ "metadata": {
+ "foo": "Foo Value"
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-metadata-resp.xml b/doc/v3/api_samples/server-metadata/server-metadata-resp.xml
new file mode 100644
index 0000000000..90436729ab
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-metadata-resp.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">Foo Value</metadata> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-post-req.json b/doc/v3/api_samples/server-metadata/server-post-req.json
new file mode 100644
index 0000000000..d41985a1bc
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-post-req.json
@@ -0,0 +1,16 @@
+{
+ "server" : {
+ "name" : "new-server-test",
+ "image_ref" : "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
+ "flavor_ref" : "http://openstack.example.com/openstack/flavors/1",
+ "metadata" : {
+ "My Server Name" : "Apache1"
+ },
+ "personality" : [
+ {
+ "path" : "/etc/banner.txt",
+ "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-post-req.xml b/doc/v3/api_samples/server-metadata/server-post-req.xml
new file mode 100644
index 0000000000..598839cf6a
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-post-req.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<server xmlns="http://docs.openstack.org/compute/api/v1.1" image_ref="http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b" flavor_ref="http://openstack.example.com/openstack/flavors/1" name="new-server-test">
+ <metadata>
+ <meta key="My Server Name">Apache1</meta>
+ </metadata>
+ <personality>
+ <file path="/etc/banner.txt">
+ ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp
+ dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k
+ IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs
+ c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g
+ QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo
+ ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv
+ dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy
+ c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6
+ b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
+ </file>
+ </personality>
+</server> \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-post-resp.json b/doc/v3/api_samples/server-metadata/server-post-resp.json
new file mode 100644
index 0000000000..8d9d896219
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-post-resp.json
@@ -0,0 +1,16 @@
+{
+ "server": {
+ "admin_pass": "ys9M8HQXvwEJ",
+ "id": "a6ebe5b4-b68b-420b-9c1e-620c4d3e0389",
+ "links": [
+ {
+ "href": "http://openstack.example.com/v3/servers/a6ebe5b4-b68b-420b-9c1e-620c4d3e0389",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack.example.com/servers/a6ebe5b4-b68b-420b-9c1e-620c4d3e0389",
+ "rel": "bookmark"
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/doc/v3/api_samples/server-metadata/server-post-resp.xml b/doc/v3/api_samples/server-metadata/server-post-resp.xml
new file mode 100644
index 0000000000..026abd6940
--- /dev/null
+++ b/doc/v3/api_samples/server-metadata/server-post-resp.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="80cd3928-5ce9-44a1-9257-88847c37f9e4" admin_pass="6GXmk5m4AXpy">
+ <metadata/>
+ <atom:link href="http://openstack.example.com/v3/servers/80cd3928-5ce9-44a1-9257-88847c37f9e4" rel="self"/>
+ <atom:link href="http://openstack.example.com/servers/80cd3928-5ce9-44a1-9257-88847c37f9e4" rel="bookmark"/>
+</server> \ No newline at end of file
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.json.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.json.tpl
new file mode 100644
index 0000000000..8df9796e9c
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.json.tpl
@@ -0,0 +1,10 @@
+{
+ "private": [
+ {
+ "addr": "%(ip)s",
+ "mac_addr": "aa:bb:cc:dd:ee:ff",
+ "type": "fixed",
+ "version": 4
+ }
+ ]
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.xml.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.xml.tpl
new file mode 100644
index 0000000000..b5c5e00e8b
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-network-resp.xml.tpl
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<network xmlns="http://docs.openstack.org/compute/api/v1.1" id="private">
+ <ip version="4" type="fixed" addr="%(ip)s" mac_addr="aa:bb:cc:dd:ee:ff"/>
+</network>
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.json.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.json.tpl
new file mode 100644
index 0000000000..a2eab422f2
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.json.tpl
@@ -0,0 +1,12 @@
+{
+ "addresses": {
+ "private": [
+ {
+ "addr": "%(ip)s",
+ "mac_addr": "aa:bb:cc:dd:ee:ff",
+ "type": "fixed",
+ "version": 4
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.xml.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.xml.tpl
new file mode 100644
index 0000000000..9b071abca1
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-ips-resp.xml.tpl
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<addresses xmlns="http://docs.openstack.org/compute/api/v1.1">
+ <network id="private">
+ <ip version="4" type="fixed" addr="%(ip)s" mac_addr="aa:bb:cc:dd:ee:ff"/>
+ </network>
+</addresses>
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.json.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.json.tpl
new file mode 100644
index 0000000000..1dcb63e3b2
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.json.tpl
@@ -0,0 +1,16 @@
+{
+ "server" : {
+ "name" : "new-server-test",
+ "image_ref" : "%(host)s/openstack/images/%(image_id)s",
+ "flavor_ref" : "%(host)s/openstack/flavors/1",
+ "metadata" : {
+ "My Server Name" : "Apache1"
+ },
+ "personality" : [
+ {
+ "path" : "/etc/banner.txt",
+ "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.xml.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.xml.tpl
new file mode 100644
index 0000000000..ddb5ea78c4
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-post-req.xml.tpl
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<server xmlns="http://docs.openstack.org/compute/api/v1.1" image_ref="%(host)s/openstack/images/%(image_id)s" flavor_ref="%(host)s/openstack/flavors/1" name="new-server-test">
+ <metadata>
+ <meta key="My Server Name">Apache1</meta>
+ </metadata>
+ <personality>
+ <file path="/etc/banner.txt">
+ ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp
+ dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k
+ IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs
+ c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g
+ QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo
+ ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv
+ dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy
+ c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6
+ b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
+ </file>
+ </personality>
+</server>
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.json.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.json.tpl
new file mode 100644
index 0000000000..6c3100fbec
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.json.tpl
@@ -0,0 +1,16 @@
+{
+ "server": {
+ "admin_pass": "%(password)s",
+ "id": "%(id)s",
+ "links": [
+ {
+ "href": "http://openstack.example.com/v3/servers/%(uuid)s",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack.example.com/servers/%(uuid)s",
+ "rel": "bookmark"
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.xml.tpl b/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.xml.tpl
new file mode 100644
index 0000000000..3470373e17
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-ips/server-post-resp.xml.tpl
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="%(id)s" admin_pass="%(password)s">
+ <metadata/>
+ <atom:link href="%(host)s/v3/servers/%(uuid)s" rel="self"/>
+ <atom:link href="%(host)s/servers/%(uuid)s" rel="bookmark"/>
+</server>
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.json.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.json.tpl
new file mode 100644
index 0000000000..2278d2afd8
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.json.tpl
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.xml.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-req.xml.tpl
new file mode 100644
index 0000000000..e742706736
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/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/v3/api_samples/server-metadata/server-metadata-all-resp.json.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.json.tpl
new file mode 100644
index 0000000000..3812a26c88
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.json.tpl
@@ -0,0 +1,5 @@
+{
+ "metadata": {
+ "foo": "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.xml.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.xml.tpl
new file mode 100644
index 0000000000..eae6d76583
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-all-resp.xml.tpl
@@ -0,0 +1,4 @@
+<?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/v3/api_samples/server-metadata/server-metadata-req.json.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.json.tpl
new file mode 100644
index 0000000000..2278d2afd8
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.json.tpl
@@ -0,0 +1,5 @@
+{
+ "metadata" : {
+ "foo" : "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.xml.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.xml.tpl
new file mode 100644
index 0000000000..9b1cd6e483
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">%(value)s</metadata>
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.json.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.json.tpl
new file mode 100644
index 0000000000..3812a26c88
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.json.tpl
@@ -0,0 +1,5 @@
+{
+ "metadata": {
+ "foo": "%(value)s"
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.xml.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.xml.tpl
new file mode 100644
index 0000000000..13d368f091
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-metadata-resp.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<metadata xmlns="http://docs.openstack.org/compute/api/v1.1" key="foo">%(value)s</metadata>
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.json.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.json.tpl
new file mode 100644
index 0000000000..1dcb63e3b2
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.json.tpl
@@ -0,0 +1,16 @@
+{
+ "server" : {
+ "name" : "new-server-test",
+ "image_ref" : "%(host)s/openstack/images/%(image_id)s",
+ "flavor_ref" : "%(host)s/openstack/flavors/1",
+ "metadata" : {
+ "My Server Name" : "Apache1"
+ },
+ "personality" : [
+ {
+ "path" : "/etc/banner.txt",
+ "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.xml.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.xml.tpl
new file mode 100644
index 0000000000..ddb5ea78c4
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-req.xml.tpl
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<server xmlns="http://docs.openstack.org/compute/api/v1.1" image_ref="%(host)s/openstack/images/%(image_id)s" flavor_ref="%(host)s/openstack/flavors/1" name="new-server-test">
+ <metadata>
+ <meta key="My Server Name">Apache1</meta>
+ </metadata>
+ <personality>
+ <file path="/etc/banner.txt">
+ ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp
+ dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k
+ IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs
+ c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g
+ QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo
+ ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv
+ dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy
+ c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6
+ b25zLiINCg0KLVJpY2hhcmQgQmFjaA==
+ </file>
+ </personality>
+</server>
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.json.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.json.tpl
new file mode 100644
index 0000000000..6c3100fbec
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.json.tpl
@@ -0,0 +1,16 @@
+{
+ "server": {
+ "admin_pass": "%(password)s",
+ "id": "%(id)s",
+ "links": [
+ {
+ "href": "http://openstack.example.com/v3/servers/%(uuid)s",
+ "rel": "self"
+ },
+ {
+ "href": "http://openstack.example.com/servers/%(uuid)s",
+ "rel": "bookmark"
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.xml.tpl b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.xml.tpl
new file mode 100644
index 0000000000..3470373e17
--- /dev/null
+++ b/nova/tests/integrated/v3/api_samples/server-metadata/server-post-resp.xml.tpl
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<server xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://docs.openstack.org/compute/api/v1.1" id="%(id)s" admin_pass="%(password)s">
+ <metadata/>
+ <atom:link href="%(host)s/v3/servers/%(uuid)s" rel="self"/>
+ <atom:link href="%(host)s/servers/%(uuid)s" rel="bookmark"/>
+</server>
diff --git a/nova/tests/integrated/v3/test_server_metadata.py b/nova/tests/integrated/v3/test_server_metadata.py
new file mode 100644
index 0000000000..e23c4641cc
--- /dev/null
+++ b/nova/tests/integrated/v3/test_server_metadata.py
@@ -0,0 +1,85 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# Copyright 2012 Nebula, Inc.
+# Copyright 2013 IBM Corp.
+#
+# 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.
+
+from nova.tests.integrated.v3 import test_servers
+
+
+class ServersMetadataJsonTest(test_servers.ServersSampleBase):
+ extends_name = 'core_only'
+ sample_dir = 'server-metadata'
+
+ def _create_and_set(self, subs):
+ uuid = self._post_server()
+ response = self._do_put('servers/%s/metadata' % uuid,
+ 'server-metadata-all-req',
+ subs)
+ self._verify_response('server-metadata-all-resp', subs, response, 200)
+ return uuid
+
+ def generalize_subs(self, subs, vanilla_regexes):
+ subs['value'] = '(Foo|Bar) Value'
+ return subs
+
+ def test_metadata_put_all(self):
+ # Test setting all metadata for a server.
+ subs = {'value': 'Foo Value'}
+ 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._verify_response('server-metadata-all-resp', subs, response, 201)
+
+ 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._verify_response('server-metadata-all-resp', subs, response, 200)
+
+ 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._verify_response('server-metadata-resp', subs, response, 200)
+
+ 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._verify_response('server-metadata-resp', subs, response, 200)
+
+ 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'
diff --git a/nova/tests/integrated/v3/test_servers_ips.py b/nova/tests/integrated/v3/test_servers_ips.py
new file mode 100644
index 0000000000..76991ffc75
--- /dev/null
+++ b/nova/tests/integrated/v3/test_servers_ips.py
@@ -0,0 +1,40 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+# Copyright 2012 Nebula, Inc.
+# Copyright 2013 IBM Corp.
+#
+# 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.
+
+from nova.tests.integrated.v3 import test_servers
+
+
+class ServersIpsJsonTest(test_servers.ServersSampleBase):
+ extends_name = 'core_only'
+ sample_dir = 'server-ips'
+
+ def test_get(self):
+ # Test getting a server's IP information.
+ uuid = self._post_server()
+ response = self._do_get('servers/%s/ips' % uuid)
+ subs = self._get_regexes()
+ self._verify_response('server-ips-resp', subs, response, 200)
+
+ def test_get_by_network(self):
+ # Test getting a server's IP information by network id.
+ uuid = self._post_server()
+ response = self._do_get('servers/%s/ips/private' % uuid)
+ subs = self._get_regexes()
+ self._verify_response('server-ips-network-resp', subs, response, 200)
+
+
+class ServersIpsXmlTest(ServersIpsJsonTest):
+ ctype = 'xml'