Adds V3 API samples for cells and multinic
Adds V3 API samples for cells and multinic extensions. Bundling them together to save on review load Partially implements blueprint v3-api-unittests Partially implements blueprint v3-api-specification Change-Id: I50840b3d900fbc8ff4f655e4188cc886d7065729
This commit is contained in:
parent
b7fdf9707a
commit
abaadf09ed
26
doc/v3/api_samples/os-cells/cells-capacities-resp.json
Normal file
26
doc/v3/api_samples/os-cells/cells-capacities-resp.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"cell": {
|
||||||
|
"capacities": {
|
||||||
|
"disk_free": {
|
||||||
|
"total_mb": 1052672,
|
||||||
|
"units_by_mb": {
|
||||||
|
"0": 0,
|
||||||
|
"163840": 5,
|
||||||
|
"20480": 46,
|
||||||
|
"40960": 23,
|
||||||
|
"81920": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ram_free": {
|
||||||
|
"total_mb": 7680,
|
||||||
|
"units_by_mb": {
|
||||||
|
"16384": 0,
|
||||||
|
"2048": 3,
|
||||||
|
"4096": 1,
|
||||||
|
"512": 13,
|
||||||
|
"8192": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
doc/v3/api_samples/os-cells/cells-capacities-resp.xml
Normal file
19
doc/v3/api_samples/os-cells/cells-capacities-resp.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cell xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
|
||||||
|
<capacities>
|
||||||
|
<ram_free total_mb="7680">
|
||||||
|
<unit_by_mb unit="0" mb="8192"/>
|
||||||
|
<unit_by_mb unit="13" mb="512"/>
|
||||||
|
<unit_by_mb unit="1" mb="4096"/>
|
||||||
|
<unit_by_mb unit="3" mb="2048"/>
|
||||||
|
<unit_by_mb unit="0" mb="16384"/>
|
||||||
|
</ram_free>
|
||||||
|
<disk_free total_mb="1052672">
|
||||||
|
<unit_by_mb unit="11" mb="81920"/>
|
||||||
|
<unit_by_mb unit="46" mb="20480"/>
|
||||||
|
<unit_by_mb unit="5" mb="163840"/>
|
||||||
|
<unit_by_mb unit="23" mb="40960"/>
|
||||||
|
<unit_by_mb unit="0" mb="0"/>
|
||||||
|
</disk_free>
|
||||||
|
</capacities>
|
||||||
|
</cell>
|
9
doc/v3/api_samples/os-cells/cells-get-resp.json
Normal file
9
doc/v3/api_samples/os-cells/cells-get-resp.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"cell": {
|
||||||
|
"name": "cell3",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username3"
|
||||||
|
}
|
||||||
|
}
|
2
doc/v3/api_samples/os-cells/cells-get-resp.xml
Normal file
2
doc/v3/api_samples/os-cells/cells-get-resp.xml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cell xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" username="username3" rpc_host="None" type="child" name="cell3" rpc_port="None"/>
|
3
doc/v3/api_samples/os-cells/cells-list-empty-resp.json
Normal file
3
doc/v3/api_samples/os-cells/cells-list-empty-resp.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"cells": []
|
||||||
|
}
|
2
doc/v3/api_samples/os-cells/cells-list-empty-resp.xml
Normal file
2
doc/v3/api_samples/os-cells/cells-list-empty-resp.xml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cells xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"/>
|
39
doc/v3/api_samples/os-cells/cells-list-resp.json
Normal file
39
doc/v3/api_samples/os-cells/cells-list-resp.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"name": "cell1",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell3",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell5",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell2",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "parent",
|
||||||
|
"username": "username2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell4",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "parent",
|
||||||
|
"username": "username4"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
8
doc/v3/api_samples/os-cells/cells-list-resp.xml
Normal file
8
doc/v3/api_samples/os-cells/cells-list-resp.xml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cells xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
|
||||||
|
<cell username="username1" rpc_host="None" type="child" name="cell1" rpc_port="None"/>
|
||||||
|
<cell username="username3" rpc_host="None" type="child" name="cell3" rpc_port="None"/>
|
||||||
|
<cell username="username5" rpc_host="None" type="child" name="cell5" rpc_port="None"/>
|
||||||
|
<cell username="username2" rpc_host="None" type="parent" name="cell2" rpc_port="None"/>
|
||||||
|
<cell username="username4" rpc_host="None" type="parent" name="cell4" rpc_port="None"/>
|
||||||
|
</cells>
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"addFixedIp":{
|
||||||
|
"networkId": 1
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<add_fixed_ip>
|
||||||
|
<network_id>1</network_id>
|
||||||
|
</add_fixed_ip>
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"remove_fixed_ip":{
|
||||||
|
"address": "10.0.0.4"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<remove_fixed_ip>
|
||||||
|
<address>10.0.0.4</address>
|
||||||
|
</remove_fixed_ip>
|
16
doc/v3/api_samples/os-multinic/server-post-req.json
Normal file
16
doc/v3/api_samples/os-multinic/server-post-req.json
Normal file
@ -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=="
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
19
doc/v3/api_samples/os-multinic/server-post-req.xml
Normal file
19
doc/v3/api_samples/os-multinic/server-post-req.xml
Normal file
@ -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>
|
16
doc/v3/api_samples/os-multinic/server-post-resp.json
Normal file
16
doc/v3/api_samples/os-multinic/server-post-resp.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"server": {
|
||||||
|
"admin_pass": "5Y9rR4XaM8Qg",
|
||||||
|
"id": "bbe8d469-e8cb-49b1-96d8-f93b68c82355",
|
||||||
|
"links": [
|
||||||
|
{
|
||||||
|
"href": "http://openstack.example.com/v3/servers/bbe8d469-e8cb-49b1-96d8-f93b68c82355",
|
||||||
|
"rel": "self"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "http://openstack.example.com/servers/bbe8d469-e8cb-49b1-96d8-f93b68c82355",
|
||||||
|
"rel": "bookmark"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
6
doc/v3/api_samples/os-multinic/server-post-resp.xml
Normal file
6
doc/v3/api_samples/os-multinic/server-post-resp.xml
Normal file
@ -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="fcfa0d46-4f4d-4fa5-a255-5b1d826b5331" admin_pass="ofbz7nspfcQt">
|
||||||
|
<metadata/>
|
||||||
|
<atom:link href="http://openstack.example.com/v3/servers/fcfa0d46-4f4d-4fa5-a255-5b1d826b5331" rel="self"/>
|
||||||
|
<atom:link href="http://openstack.example.com/servers/fcfa0d46-4f4d-4fa5-a255-5b1d826b5331" rel="bookmark"/>
|
||||||
|
</server>
|
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"cell": {
|
||||||
|
"capacities": {
|
||||||
|
"disk_free": {
|
||||||
|
"total_mb": 1052672,
|
||||||
|
"units_by_mb": {
|
||||||
|
"0": 0,
|
||||||
|
"163840": 5,
|
||||||
|
"20480": 46,
|
||||||
|
"40960": 23,
|
||||||
|
"81920": 11
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ram_free": {
|
||||||
|
"total_mb": 7680,
|
||||||
|
"units_by_mb": {
|
||||||
|
"16384": 0,
|
||||||
|
"2048": 3,
|
||||||
|
"4096": 1,
|
||||||
|
"512": 13,
|
||||||
|
"8192": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cell xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
|
||||||
|
<capacities>
|
||||||
|
<ram_free total_mb="7680">
|
||||||
|
<unit_by_mb unit="0" mb="8192"/>
|
||||||
|
<unit_by_mb unit="13" mb="512"/>
|
||||||
|
<unit_by_mb unit="1" mb="4096"/>
|
||||||
|
<unit_by_mb unit="3" mb="2048"/>
|
||||||
|
<unit_by_mb unit="0" mb="16384"/>
|
||||||
|
</ram_free>
|
||||||
|
<disk_free total_mb="1052672">
|
||||||
|
<unit_by_mb unit="11" mb="81920"/>
|
||||||
|
<unit_by_mb unit="46" mb="20480"/>
|
||||||
|
<unit_by_mb unit="5" mb="163840"/>
|
||||||
|
<unit_by_mb unit="23" mb="40960"/>
|
||||||
|
<unit_by_mb unit="0" mb="0"/>
|
||||||
|
</disk_free>
|
||||||
|
</capacities>
|
||||||
|
</cell>
|
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"cell": {
|
||||||
|
"name": "cell3",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username3"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cell xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" username="username3" rpc_host="None" type="child" name="cell3" rpc_port="None"/>
|
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"cells": []
|
||||||
|
}
|
@ -0,0 +1,2 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cells xmlns="http://docs.rackspacecloud.com/servers/api/v1.0"/>
|
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"name": "cell1",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell3",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell5",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "child",
|
||||||
|
"username": "username5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell2",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "parent",
|
||||||
|
"username": "username2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cell4",
|
||||||
|
"rpc_host": null,
|
||||||
|
"rpc_port": null,
|
||||||
|
"type": "parent",
|
||||||
|
"username": "username4"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<cells xmlns="http://docs.rackspacecloud.com/servers/api/v1.0">
|
||||||
|
<cell username="username1" rpc_host="None" type="child" name="cell1" rpc_port="None"/>
|
||||||
|
<cell username="username3" rpc_host="None" type="child" name="cell3" rpc_port="None"/>
|
||||||
|
<cell username="username5" rpc_host="None" type="child" name="cell5" rpc_port="None"/>
|
||||||
|
<cell username="username2" rpc_host="None" type="parent" name="cell2" rpc_port="None"/>
|
||||||
|
<cell username="username4" rpc_host="None" type="parent" name="cell4" rpc_port="None"/>
|
||||||
|
</cells>
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"add_fixed_ip":{
|
||||||
|
"network_id": %(networkId)s
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<add_fixed_ip>
|
||||||
|
<network_id>%(networkId)s</network_id>
|
||||||
|
</add_fixed_ip>
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"remove_fixed_ip":{
|
||||||
|
"address": "%(ip)s"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
<remove_fixed_ip>
|
||||||
|
<address>%(ip)s</address>
|
||||||
|
</remove_fixed_ip>
|
@ -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=="
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -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>
|
@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -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>
|
112
nova/tests/integrated/v3/test_cells.py
Normal file
112
nova/tests/integrated/v3/test_cells.py
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
# 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.cells import rpcapi as cells_rpcapi
|
||||||
|
from nova.cells import state
|
||||||
|
from nova import db
|
||||||
|
from nova.db.sqlalchemy import models
|
||||||
|
from nova import exception
|
||||||
|
from nova.tests.integrated.v3 import api_sample_base
|
||||||
|
|
||||||
|
|
||||||
|
class CellsSampleJsonTest(api_sample_base.ApiSampleTestBaseV3):
|
||||||
|
extension_name = "os-cells"
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
# db_check_interval < 0 makes cells manager always hit the DB
|
||||||
|
self.flags(enable=True, db_check_interval=-1, group='cells')
|
||||||
|
super(CellsSampleJsonTest, self).setUp()
|
||||||
|
self._stub_cells()
|
||||||
|
|
||||||
|
def _stub_cells(self, num_cells=5):
|
||||||
|
self.cell_list = []
|
||||||
|
self.cells_next_id = 1
|
||||||
|
|
||||||
|
def _fake_cell_get_all(context):
|
||||||
|
return self.cell_list
|
||||||
|
|
||||||
|
def _fake_cell_get(inst, context, cell_name):
|
||||||
|
for cell in self.cell_list:
|
||||||
|
if cell['name'] == cell_name:
|
||||||
|
return cell
|
||||||
|
raise exception.CellNotFound(cell_name=cell_name)
|
||||||
|
|
||||||
|
for x in xrange(num_cells):
|
||||||
|
cell = models.Cell()
|
||||||
|
our_id = self.cells_next_id
|
||||||
|
self.cells_next_id += 1
|
||||||
|
cell.update({'id': our_id,
|
||||||
|
'name': 'cell%s' % our_id,
|
||||||
|
'transport_url': 'rabbit://username%s@/' % our_id,
|
||||||
|
'is_parent': our_id % 2 == 0})
|
||||||
|
self.cell_list.append(cell)
|
||||||
|
|
||||||
|
self.stubs.Set(db, 'cell_get_all', _fake_cell_get_all)
|
||||||
|
self.stubs.Set(cells_rpcapi.CellsAPI, 'cell_get', _fake_cell_get)
|
||||||
|
|
||||||
|
def test_cells_empty_list(self):
|
||||||
|
# Override this
|
||||||
|
self._stub_cells(num_cells=0)
|
||||||
|
response = self._do_get('os-cells')
|
||||||
|
subs = self._get_regexes()
|
||||||
|
self._verify_response('cells-list-empty-resp', subs, response, 200)
|
||||||
|
|
||||||
|
def test_cells_list(self):
|
||||||
|
response = self._do_get('os-cells')
|
||||||
|
subs = self._get_regexes()
|
||||||
|
self._verify_response('cells-list-resp', subs, response, 200)
|
||||||
|
|
||||||
|
def test_cells_get(self):
|
||||||
|
response = self._do_get('os-cells/cell3')
|
||||||
|
subs = self._get_regexes()
|
||||||
|
self._verify_response('cells-get-resp', subs, response, 200)
|
||||||
|
|
||||||
|
def test_get_cell_capacity(self):
|
||||||
|
self._mock_cell_capacity()
|
||||||
|
state_manager = state.CellStateManager()
|
||||||
|
my_state = state_manager.get_my_state()
|
||||||
|
response = self._do_get('os-cells/%s/capacities' %
|
||||||
|
my_state.name)
|
||||||
|
subs = self._get_regexes()
|
||||||
|
return self._verify_response('cells-capacities-resp',
|
||||||
|
subs, response, 200)
|
||||||
|
|
||||||
|
def test_get_all_cells_capacity(self):
|
||||||
|
self._mock_cell_capacity()
|
||||||
|
response = self._do_get('os-cells/capacities')
|
||||||
|
subs = self._get_regexes()
|
||||||
|
return self._verify_response('cells-capacities-resp',
|
||||||
|
subs, response, 200)
|
||||||
|
|
||||||
|
def _mock_cell_capacity(self):
|
||||||
|
self.mox.StubOutWithMock(self.cells.manager.state_manager,
|
||||||
|
'get_our_capacities')
|
||||||
|
response = {"ram_free":
|
||||||
|
{"units_by_mb": {"8192": 0, "512": 13,
|
||||||
|
"4096": 1, "2048": 3, "16384": 0},
|
||||||
|
"total_mb": 7680},
|
||||||
|
"disk_free":
|
||||||
|
{"units_by_mb": {"81920": 11, "20480": 46,
|
||||||
|
"40960": 23, "163840": 5, "0": 0},
|
||||||
|
"total_mb": 1052672}
|
||||||
|
}
|
||||||
|
self.cells.manager.state_manager.get_our_capacities(). \
|
||||||
|
AndReturn(response)
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
|
|
||||||
|
class CellsSampleXmlTest(CellsSampleJsonTest):
|
||||||
|
ctype = 'xml'
|
54
nova/tests/integrated/v3/test_multinic.py
Normal file
54
nova/tests/integrated/v3/test_multinic.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# 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 MultinicSampleJsonTest(test_servers.ServersSampleBase):
|
||||||
|
extension_name = "os-multinic"
|
||||||
|
|
||||||
|
def _disable_instance_dns_manager(self):
|
||||||
|
# NOTE(markmc): it looks like multinic and instance_dns_manager are
|
||||||
|
# incompatible. See:
|
||||||
|
# https://bugs.launchpad.net/nova/+bug/1213251
|
||||||
|
self.flags(
|
||||||
|
instance_dns_manager='nova.network.noop_dns_driver.NoopDNSDriver')
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self._disable_instance_dns_manager()
|
||||||
|
super(MultinicSampleJsonTest, self).setUp()
|
||||||
|
self.uuid = self._post_server()
|
||||||
|
|
||||||
|
def _add_fixed_ip(self):
|
||||||
|
subs = {"networkId": 1}
|
||||||
|
response = self._do_post('servers/%s/action' % (self.uuid),
|
||||||
|
'multinic-add-fixed-ip-req', subs)
|
||||||
|
self.assertEqual(response.status, 202)
|
||||||
|
|
||||||
|
def test_add_fixed_ip(self):
|
||||||
|
self._add_fixed_ip()
|
||||||
|
|
||||||
|
def test_remove_fixed_ip(self):
|
||||||
|
self._add_fixed_ip()
|
||||||
|
|
||||||
|
subs = {"ip": "10.0.0.4"}
|
||||||
|
response = self._do_post('servers/%s/action' % (self.uuid),
|
||||||
|
'multinic-remove-fixed-ip-req', subs)
|
||||||
|
self.assertEqual(response.status, 202)
|
||||||
|
|
||||||
|
|
||||||
|
class MultinicSampleXmlTest(MultinicSampleJsonTest):
|
||||||
|
ctype = "xml"
|
Loading…
Reference in New Issue
Block a user