summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-10-02 09:50:39 +0000
committerGerrit Code Review <review@openstack.org>2012-10-02 09:50:39 +0000
commitd4e907509e89d37e463bd30ab92f8f8aa4bfec6e (patch)
tree2ca48e70bf405ff6449f5f6c31aa15b56aa2eaf3 /nova
parent496cb35beb7a5d5fe1f2578a4d38dc13296453d4 (diff)
parentce2ba8fae83dbee8e36eda69d9f4c82ad67838b7 (diff)
downloadnova-d4e907509e89d37e463bd30ab92f8f8aa4bfec6e.tar.gz
nova-d4e907509e89d37e463bd30ab92f8f8aa4bfec6e.tar.xz
nova-d4e907509e89d37e463bd30ab92f8f8aa4bfec6e.zip
Merge "Add aggregates extension to API samples test."
Diffstat (limited to 'nova')
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl6
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl9
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.xml.tpl6
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.json.tpl7
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.json.tpl11
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.xml.tpl10
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl6
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.json.tpl7
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl13
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.xml.tpl12
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl15
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.xml.tpl14
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.json.tpl13
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.xml.tpl12
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl15
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.xml.tpl14
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl15
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.xml.tpl14
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tpl13
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml.tpl12
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/server-post-req.json.tpl16
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/server-post-req.xml.tpl19
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/server-post-resp.json.tpl16
-rw-r--r--nova/tests/integrated/api_samples/os-aggregates/server-post-resp.xml.tpl6
-rw-r--r--nova/tests/integrated/test_api_samples.py97
29 files changed, 380 insertions, 6 deletions
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl
new file mode 100644
index 000000000..2a84101a1
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.json.tpl
@@ -0,0 +1,6 @@
+{
+ "add_host":
+ {
+ "host": "%(host_name)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.xml.tpl
new file mode 100644
index 000000000..4454134ef
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-add-host-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<add_host host="%(host_name)s" />
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl
new file mode 100644
index 000000000..63a2921ca
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.json.tpl
@@ -0,0 +1,9 @@
+{
+ "set_metadata":
+ {
+ "metadata":
+ {
+ "key": "value"
+ }
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.xml.tpl
new file mode 100644
index 000000000..72b1e742a
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-metadata-post-req.xml.tpl
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<set_metadata>
+ <metadata>
+ <key>value</key>
+ </metadata>
+</set_metadata>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.json.tpl
new file mode 100644
index 000000000..fc806061e
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.json.tpl
@@ -0,0 +1,7 @@
+{
+ "aggregate":
+ {
+ "name": "name",
+ "availability_zone": "nova"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.xml.tpl
new file mode 100644
index 000000000..4931476ae
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aggregate name="name" availability_zone="nova" />
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.json.tpl
new file mode 100644
index 000000000..c5139950a
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.json.tpl
@@ -0,0 +1,11 @@
+{
+ "aggregate": {
+ "availability_zone": "nova",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "id": %(aggregate_id)s,
+ "name": "name",
+ "updated_at": null
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.xml.tpl
new file mode 100644
index 000000000..f8603ac33
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-post-resp.xml.tpl
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregate>
+ <name>name</name>
+ <availability_zone>nova</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>None</updated_at>
+ <deleted_at>None</deleted_at>
+ <id>%(aggregate_id)s</id>
+</aggregate>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl
new file mode 100644
index 000000000..66ecf30cd
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.json.tpl
@@ -0,0 +1,6 @@
+{
+ "remove_host":
+ {
+ "host": "%(host_name)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.xml.tpl
new file mode 100644
index 000000000..bc2896835
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-remove-host-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<remove_host host="%(host_name)s" />
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.json.tpl
new file mode 100644
index 000000000..55e4b0934
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.json.tpl
@@ -0,0 +1,7 @@
+{
+ "aggregate":
+ {
+ "name": "newname",
+ "availability_zone": "nova2"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.xml.tpl
new file mode 100644
index 000000000..04ce4fba5
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<aggregate name="newname" availability_zone="nova2" />
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl
new file mode 100644
index 000000000..89a48ee57
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.json.tpl
@@ -0,0 +1,13 @@
+{
+ "aggregate": {
+ "availability_zone": "nova2",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "hosts": [],
+ "id": 1,
+ "metadata": {},
+ "name": "newname",
+ "updated_at": "%(timestamp)s"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.xml.tpl
new file mode 100644
index 000000000..3f72a0b43
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregate-update-post-resp.xml.tpl
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregate>
+ <name>newname</name>
+ <availability_zone>nova2</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>%(timestamp)s</updated_at>
+ <hosts/>
+ <deleted_at>None</deleted_at>
+ <id>1</id>
+ <metadata/>
+</aggregate>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl
new file mode 100644
index 000000000..ee0ea6c3d
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.json.tpl
@@ -0,0 +1,15 @@
+{
+ "aggregate": {
+ "availability_zone": "nova",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "hosts": [
+ "%(compute_host)s"
+ ],
+ "id": 1,
+ "metadata": {},
+ "name": "name",
+ "updated_at": null
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.xml.tpl
new file mode 100644
index 000000000..82a0401ad
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-add-host-post-resp.xml.tpl
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregate>
+ <name>name</name>
+ <availability_zone>nova</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>None</updated_at>
+ <hosts>
+ <host>%(compute_host)s</host>
+ </hosts>
+ <deleted_at>None</deleted_at>
+ <id>1</id>
+ <metadata/>
+</aggregate>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.json.tpl
new file mode 100644
index 000000000..8ce7d9c40
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.json.tpl
@@ -0,0 +1,13 @@
+{
+ "aggregate": {
+ "availability_zone": "nova",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "hosts": [],
+ "id": 1,
+ "metadata": {},
+ "name": "name",
+ "updated_at": null
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.xml.tpl
new file mode 100644
index 000000000..56f0dd3e8
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-get-resp.xml.tpl
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregate>
+ <name>name</name>
+ <availability_zone>nova</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>None</updated_at>
+ <hosts/>
+ <deleted_at>None</deleted_at>
+ <id>1</id>
+ <metadata/>
+</aggregate>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl
new file mode 100644
index 000000000..f373f02f7
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.json.tpl
@@ -0,0 +1,15 @@
+{
+ "aggregates": [
+ {
+ "availability_zone": "nova",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "hosts": [],
+ "id": 1,
+ "metadata": {},
+ "name": "name",
+ "updated_at": null
+ }
+ ]
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.xml.tpl
new file mode 100644
index 000000000..417b1016f
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-list-get-resp.xml.tpl
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregates>
+ <aggregate>
+ <name>name</name>
+ <availability_zone>nova</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>None</updated_at>
+ <hosts/>
+ <deleted_at>None</deleted_at>
+ <id>1</id>
+ <metadata/>
+ </aggregate>
+</aggregates>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl
new file mode 100644
index 000000000..058a1ecf5
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.json.tpl
@@ -0,0 +1,15 @@
+{
+ "aggregate": {
+ "availability_zone": "nova",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "hosts": [],
+ "id": 1,
+ "metadata": {
+ "key": "value"
+ },
+ "name": "name",
+ "updated_at": null
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.xml.tpl
new file mode 100644
index 000000000..9bbd1f0bd
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-metadata-post-resp.xml.tpl
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregate>
+ <name>name</name>
+ <availability_zone>nova</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>None</updated_at>
+ <hosts/>
+ <deleted_at>None</deleted_at>
+ <id>1</id>
+ <metadata>
+ <key>value</key>
+ </metadata>
+</aggregate>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tpl
new file mode 100644
index 000000000..8ce7d9c40
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.json.tpl
@@ -0,0 +1,13 @@
+{
+ "aggregate": {
+ "availability_zone": "nova",
+ "created_at": "%(timestamp)s",
+ "deleted": false,
+ "deleted_at": null,
+ "hosts": [],
+ "id": 1,
+ "metadata": {},
+ "name": "name",
+ "updated_at": null
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml.tpl
new file mode 100644
index 000000000..56f0dd3e8
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/aggregates-remove-host-post-resp.xml.tpl
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<aggregate>
+ <name>name</name>
+ <availability_zone>nova</availability_zone>
+ <deleted>False</deleted>
+ <created_at>%(timestamp)s</created_at>
+ <updated_at>None</updated_at>
+ <hosts/>
+ <deleted_at>None</deleted_at>
+ <id>1</id>
+ <metadata/>
+</aggregate>
diff --git a/nova/tests/integrated/api_samples/os-aggregates/server-post-req.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/server-post-req.json.tpl
new file mode 100644
index 000000000..d3916d1aa
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/server-post-req.json.tpl
@@ -0,0 +1,16 @@
+{
+ "server" : {
+ "name" : "new-server-test",
+ "imageRef" : "%(host)s/openstack/images/%(image_id)s",
+ "flavorRef" : "%(host)s/openstack/flavors/1",
+ "metadata" : {
+ "My Server Name" : "Apache1"
+ },
+ "personality" : [
+ {
+ "path" : "/etc/banner.txt",
+ "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA=="
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/server-post-req.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/server-post-req.xml.tpl
new file mode 100644
index 000000000..f92614984
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/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" imageRef="%(host)s/openstack/images/%(image_id)s" flavorRef="%(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/api_samples/os-aggregates/server-post-resp.json.tpl b/nova/tests/integrated/api_samples/os-aggregates/server-post-resp.json.tpl
new file mode 100644
index 000000000..d5f030c87
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/server-post-resp.json.tpl
@@ -0,0 +1,16 @@
+{
+ "server": {
+ "adminPass": "%(password)s",
+ "id": "%(id)s",
+ "links": [
+ {
+ "href": "%(host)s/v2/openstack/servers/%(uuid)s",
+ "rel": "self"
+ },
+ {
+ "href": "%(host)s/openstack/servers/%(uuid)s",
+ "rel": "bookmark"
+ }
+ ]
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-aggregates/server-post-resp.xml.tpl b/nova/tests/integrated/api_samples/os-aggregates/server-post-resp.xml.tpl
new file mode 100644
index 000000000..3bb13e69b
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-aggregates/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" adminPass="%(password)s">
+ <metadata/>
+ <atom:link href="%(host)s/v2/openstack/servers/%(uuid)s" rel="self"/>
+ <atom:link href="%(host)s/openstack/servers/%(uuid)s" rel="bookmark"/>
+</server>
diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py
index 1599bd9b8..5abcaaff7 100644
--- a/nova/tests/integrated/test_api_samples.py
+++ b/nova/tests/integrated/test_api_samples.py
@@ -71,6 +71,8 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
if not data:
return {}
if self.ctype == 'json':
+ # NOTE(vish): allow non-quoted replacements to survive json
+ data = re.sub(r'([^"])%\((.+)\)s([^"])', r'\1"%(int:\2)s"\3', data)
return jsonutils.loads(data)
else:
def to_dict(node):
@@ -163,13 +165,22 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
# NOTE(vish): escape stuff for regex
for char in '[]<>?':
expected = expected.replace(char, '\\%s' % char)
+ # NOTE(vish): special handling of subs that are not quoted. We are
+ # expecting an int but we had to pass in a string
+ # so the json would parse properly.
+ if expected.startswith("%(int:"):
+ result = str(result)
+ expected = expected.replace('int:', '')
expected = expected % subs
match = re.match(expected, result)
if not match:
raise NoMatch(_('Values do not match:\n'
'%(expected)s\n%(result)s') % locals())
- if match.groups():
- matched_value = match.groups()[0]
+ try:
+ matched_value = match.group('id')
+ except IndexError:
+ if match.groups():
+ matched_value = match.groups()[0]
else:
if isinstance(expected, basestring):
# NOTE(danms): Ignore whitespace in this comparison
@@ -201,13 +212,15 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
else:
text = r'[^<]*'
return {
- 'timestamp': '[0-9]{4}-[0,1][0-9]-[0-3][0-9]T'
- '[0-9]{2}:[0-9]{2}:[0-9]{2}'
- '(Z|(\+|-)[0-9]{2}:[0-9]{2})',
+ # NOTE(treinish): Could result in a false positive, but it
+ # shouldn't be an issue for this case.
+ 'timestamp': '\d{4}-[0,1]\d-[0-3]\d[ ,T]'
+ '\d{2}:\d{2}:\d{2}'
+ '(Z|(\+|-)\d{2}:\d{2}|\.\d{6})',
'password': '[0-9a-zA-Z]{1,12}',
'ip': '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}',
'ip6': '([0-9a-zA-Z]{1,4}:){1,7}:?[0-9a-zA-Z]',
- 'id': '([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}'
+ 'id': '(?P<id>[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}'
'-[0-9a-f]{4}-[0-9a-f]{12})',
'uuid': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}'
'-[0-9a-f]{4}-[0-9a-f]{12}',
@@ -1060,3 +1073,75 @@ class CloudPipeSampleJsonTest(ApiSampleTestBase):
class CloudPipeSampleXmlTest(CloudPipeSampleJsonTest):
ctype = "xml"
+
+
+class AggregatesSampleJsonTest(ServersSampleBase):
+ extension_name = "nova.api.openstack.compute.contrib" + \
+ ".aggregates.Aggregates"
+
+ def test_aggregate_create(self):
+ subs = {
+ "aggregate_id": '(?P<id>\d+)'
+ }
+ response = self._do_post('os-aggregates', 'aggregate-post-req', subs)
+ self.assertEqual(response.status, 200)
+ subs.update(self._get_regexes())
+ return self._verify_response('aggregate-post-resp', subs, response)
+
+ def test_list_aggregates(self):
+ self.test_aggregate_create()
+ response = self._do_get('os-aggregates')
+ subs = self._get_regexes()
+ return self._verify_response('aggregates-list-get-resp',
+ subs, response)
+
+ def test_aggregate_get(self):
+ agg_id = self.test_aggregate_create()
+ response = self._do_get('os-aggregates/%s' % agg_id)
+ subs = self._get_regexes()
+ return self._verify_response('aggregates-get-resp', subs, response)
+
+ def test_add_metadata(self):
+ agg_id = self.test_aggregate_create()
+ response = self._do_post('os-aggregates/%s/action' % agg_id,
+ 'aggregate-metadata-post-req',
+ {'action': 'set_metadata'})
+ subs = self._get_regexes()
+ return self._verify_response('aggregates-metadata-post-resp',
+ subs, response)
+
+ def test_add_host(self):
+ aggregate_id = self.test_aggregate_create()
+ subs = {
+ "action": "add_host",
+ "host_name": self.compute.host,
+ }
+ response = self._do_post('os-aggregates/%s/action' % aggregate_id,
+ 'aggregate-add-host-post-req', subs)
+ subs.update(self._get_regexes())
+ return self._verify_response('aggregates-add-host-post-resp',
+ subs, response)
+
+ def test_remove_host(self):
+ self.test_add_host()
+ subs = {
+ "action": "add_host",
+ "host_name": self.compute.host,
+ }
+ response = self._do_post('os-aggregates/1/action',
+ 'aggregate-remove-host-post-req', subs)
+ subs.update(self._get_regexes())
+ return self._verify_response('aggregates-remove-host-post-resp',
+ subs, response)
+
+ def test_update_aggregate(self):
+ aggregate_id = self.test_aggregate_create()
+ response = self._do_put('os-aggregates/%s' % aggregate_id,
+ 'aggregate-update-post-req', {})
+ subs = self._get_regexes()
+ return self._verify_response('aggregate-update-post-resp',
+ subs, response)
+
+
+class AggregatesSampleXmlTest(AggregatesSampleJsonTest):
+ ctype = 'xml'