diff options
| author | Arata Notsu <notsu@virtualtech.jp> | 2013-04-03 19:31:09 +0900 |
|---|---|---|
| committer | Arata Notsu <notsu@virtualtech.jp> | 2013-04-11 16:31:11 +0900 |
| commit | 64a0bcae5aacff2bf2445ab519b837b4e01cce60 (patch) | |
| tree | 243170bab11e611acaac302b034387360a7fe491 | |
| parent | 6b2af9c084754a1e678f741bfc6b97e13f1cf8a5 (diff) | |
| download | nova-64a0bcae5aacff2bf2445ab519b837b4e01cce60.tar.gz nova-64a0bcae5aacff2bf2445ab519b837b4e01cce60.tar.xz nova-64a0bcae5aacff2bf2445ab519b837b4e01cce60.zip | |
baremetal: Change node api related to prov_mac_address
Now prov_mac_address is going to be dropped from bm_nodes table. This patch
adjust api to the change.
A user is expected to create a node without specifying prov_mac_address, then add
an interface having the address to the node. However, for compatibility, a user
still can specify prov_mac_address when create a node. In this case, an interface
having prov_mac_address is automatically added to the node.
In response body of create, index and show, "prov_mac_address" field no longer
exists since they are showed as a member of "interfaces" fileld.
DocImpact
Change-Id: I6653829364b0a641442d45e766493180d6f2a880
27 files changed, 158 insertions, 22 deletions
diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.json b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.json index fa6455c49..389517ed7 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.json +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.json @@ -7,7 +7,6 @@ "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", - "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000 } -}
\ No newline at end of file +} diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml index 3cbc3ea8a..a06b8d73f 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml @@ -6,6 +6,5 @@ local_gb="128" pm_address="10.1.2.3" pm_user="pm_user" - prov_mac_address="12:34:56:78:90:ab" terminal_port="8000" -/>
\ No newline at end of file +/> diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json index 0f176482c..fdb206560 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json @@ -8,7 +8,6 @@ "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", - "prov_mac_address": "12:34:56:78:90:ab", "service_host": "host", "terminal_port": 8000 } diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml index 20fb43b64..6a0b3a266 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml @@ -4,7 +4,6 @@ pm_address="10.1.2.3" cpus="8" memory_mb="8192" - prov_mac_address="12:34:56:78:90:ab" service_host="host" local_gb="128" id="1" diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json new file mode 100644 index 000000000..82b6485b9 --- /dev/null +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json @@ -0,0 +1,13 @@ +{ + "node": { + "service_host": "host", + "cpus": 8, + "memory_mb": 8192, + "local_gb": 128, + "pm_address": "10.1.2.3", + "pm_user": "pm_user", + "pm_password": "pm_pass", + "prov_mac_address": "12:34:56:78:90:ab", + "terminal_port": 8000 + } +} diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml new file mode 100644 index 000000000..8065c41c1 --- /dev/null +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<node + service_host="host" + cpus="8" + memory_mb="8192" + local_gb="128" + pm_address="10.1.2.3" + pm_user="pm_user" + prov_mac_address="12:34:56:78:90:ab" + terminal_port="8000" +/> diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json new file mode 100644 index 000000000..90ff4e371 --- /dev/null +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json @@ -0,0 +1,21 @@ +{ + "node": { + "cpus": 8, + "id": 1, + "instance_uuid": null, + "interfaces": [ + { + "address": "12:34:56:78:90:ab", + "datapath_id": null, + "id": 1, + "port_no": null + } + ], + "local_gb": 128, + "memory_mb": 8192, + "pm_address": "10.1.2.3", + "pm_user": "pm_user", + "service_host": "host", + "terminal_port": 8000 + } +} diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml new file mode 100644 index 000000000..1432629ed --- /dev/null +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml @@ -0,0 +1,19 @@ +<?xml version='1.0' encoding='UTF-8'?> +<node + instance_uuid="None" + pm_address="10.1.2.3" + cpus="8" + memory_mb="8192" + service_host="host" + local_gb="128" + id="1" + pm_user="pm_user" + terminal_port="8000"> + <interfaces> + <interface + datapath_id="None" + id="1" + port_no="None" + address="12:34:56:78:90:ab"/> + </interfaces> +</node> diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json b/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json index d85f7c6f7..1b8d5a8ce 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json @@ -16,7 +16,6 @@ "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", - "prov_mac_address": "12:34:56:78:90:ab", "service_host": "host", "terminal_port": 8000 } diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml b/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml index feb3d6f1d..2afc47f67 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml @@ -5,7 +5,6 @@ pm_address="10.1.2.3" cpus="8" memory_mb="8192" - prov_mac_address="12:34:56:78:90:ab" service_host="host" local_gb="128" id="1" diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json b/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json index c407c20a2..a8ba25ef9 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json @@ -15,7 +15,6 @@ "memory_mb": 8192, "pm_address": "10.1.2.3", "pm_user": "pm_user", - "prov_mac_address": "12:34:56:78:90:ab", "service_host": "host", "terminal_port": 8000 } diff --git a/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml b/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml index 12d881a3f..438ee5921 100644 --- a/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml +++ b/doc/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml @@ -4,7 +4,6 @@ pm_address="10.1.2.3" cpus="8" memory_mb="8192" - prov_mac_address="12:34:56:78:90:ab" service_host="host" local_gb="128" id="1" diff --git a/nova/api/openstack/compute/contrib/baremetal_nodes.py b/nova/api/openstack/compute/contrib/baremetal_nodes.py index b3f226039..f69db50f0 100644 --- a/nova/api/openstack/compute/contrib/baremetal_nodes.py +++ b/nova/api/openstack/compute/contrib/baremetal_nodes.py @@ -26,7 +26,7 @@ from nova.virt.baremetal import db authorize = extensions.extension_authorizer('compute', 'baremetal_nodes') node_fields = ['id', 'cpus', 'local_gb', 'memory_mb', 'pm_address', - 'pm_user', 'prov_mac_address', + 'pm_user', 'service_host', 'terminal_port', 'instance_uuid', ] @@ -129,9 +129,21 @@ class BareMetalNodeController(wsgi.Controller): def create(self, req, body): context = req.environ['nova.context'] authorize(context) - node = db.bm_node_create(context, body['node']) + values = body['node'].copy() + prov_mac_address = values.pop('prov_mac_address', None) + node = db.bm_node_create(context, values) node = _node_dict(node) - node['interfaces'] = [] + if prov_mac_address: + if_id = db.bm_interface_create(context, + bm_node_id=node['id'], + address=prov_mac_address, + datapath_id=None, + port_no=None) + if_ref = db.bm_interface_get(context, if_id) + node['interfaces'] = [_interface_dict(if_ref)] + else: + node['interfaces'] = [] + print node return {'node': node} def delete(self, req, id): diff --git a/nova/tests/api/openstack/compute/contrib/test_baremetal_nodes.py b/nova/tests/api/openstack/compute/contrib/test_baremetal_nodes.py index 76ebd8dec..23d06cad2 100644 --- a/nova/tests/api/openstack/compute/contrib/test_baremetal_nodes.py +++ b/nova/tests/api/openstack/compute/contrib/test_baremetal_nodes.py @@ -46,7 +46,6 @@ class BareMetalNodesTest(test.TestCase): 'pm_address': "10.1.2.3", 'pm_user': "pm_user", 'pm_password': "pm_pass", - 'prov_mac_address': "12:34:56:78:90:ab", 'terminal_port': 8000, 'interfaces': [], } diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.json.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.json.tpl index 82b6485b9..389517ed7 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.json.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.json.tpl @@ -7,7 +7,6 @@ "pm_address": "10.1.2.3", "pm_user": "pm_user", "pm_password": "pm_pass", - "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000 } } diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml.tpl index 8065c41c1..a06b8d73f 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-req.xml.tpl @@ -6,6 +6,5 @@ local_gb="128" pm_address="10.1.2.3" pm_user="pm_user" - prov_mac_address="12:34:56:78:90:ab" terminal_port="8000" /> diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json.tpl index a0d976b99..855b67150 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.json.tpl @@ -6,7 +6,6 @@ "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", - "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml.tpl index 1c3700841..15d0640c9 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-resp.xml.tpl @@ -6,7 +6,6 @@ local_gb="128" pm_address="10.1.2.3" pm_user="pm_user" - prov_mac_address="12:34:56:78:90:ab" terminal_port="8000" instance_uuid="None" id="%(node_id)s"> diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json.tpl new file mode 100644 index 000000000..458aa1282 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.json.tpl @@ -0,0 +1,13 @@ +{ + "node": { + "service_host": "host", + "cpus": 8, + "memory_mb": 8192, + "local_gb": 128, + "pm_address": "10.1.2.3", + "pm_user": "pm_user", + "pm_password": "pm_pass", + "prov_mac_address": "%(address)s", + "terminal_port": 8000 + } +} diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml.tpl new file mode 100644 index 000000000..2c7273709 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-req.xml.tpl @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<node + service_host="host" + cpus="8" + memory_mb="8192" + local_gb="128" + pm_address="10.1.2.3" + pm_user="pm_user" + prov_mac_address="%(address)s" + terminal_port="8000" +/> diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json.tpl new file mode 100644 index 000000000..dae8d4373 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.json.tpl @@ -0,0 +1,19 @@ +{ + "node": { + "service_host": "host", + "cpus": 8, + "memory_mb": 8192, + "local_gb": 128, + "pm_address": "10.1.2.3", + "pm_user": "pm_user", + "terminal_port": 8000, + "instance_uuid": null, + "id": %(node_id)s, + "interfaces": [{ + "id": %(interface_id)s, + "address": "%(address)s", + "datapath_id": null, + "port_no": null + }] + } +} diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml.tpl new file mode 100644 index 000000000..b036a1d47 --- /dev/null +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-create-with-address-resp.xml.tpl @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<node + service_host="host" + cpus="8" + memory_mb="8192" + local_gb="128" + pm_address="10.1.2.3" + pm_user="pm_user" + terminal_port="8000" + instance_uuid="None" + id="%(node_id)s"> + <interfaces> + <interface + id="%(interface_id)s" + address="%(address)s" + datapath_id="None" + port_no="None"/> + </interfaces> +</node> diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json.tpl index 4a5e03701..a38bdf6d7 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.json.tpl @@ -6,7 +6,6 @@ "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", - "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml.tpl index f8cfc3885..5bb51d4be 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-list-resp.xml.tpl @@ -7,7 +7,6 @@ local_gb="128" pm_address="10.1.2.3" pm_user="pm_user" - prov_mac_address="12:34:56:78:90:ab" terminal_port="8000" instance_uuid="None" id="%(node_id)s"> diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json.tpl index 67a878a4a..dae8d4373 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.json.tpl @@ -6,7 +6,6 @@ "local_gb": 128, "pm_address": "10.1.2.3", "pm_user": "pm_user", - "prov_mac_address": "12:34:56:78:90:ab", "terminal_port": 8000, "instance_uuid": null, "id": %(node_id)s, diff --git a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml.tpl b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml.tpl index 667024116..7fc10026e 100644 --- a/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml.tpl +++ b/nova/tests/integrated/api_samples/os-baremetal-nodes/baremetal-node-show-resp.xml.tpl @@ -6,7 +6,6 @@ local_gb="128" pm_address="10.1.2.3" pm_user="pm_user" - prov_mac_address="12:34:56:78:90:ab" terminal_port="8000" instance_uuid="None" id="%(node_id)s"> diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py index c0c908e07..5a2327bc0 100644 --- a/nova/tests/integrated/test_api_samples.py +++ b/nova/tests/integrated/test_api_samples.py @@ -2782,9 +2782,24 @@ class BareMetalNodesJsonTest(ApiSampleTestBase, bm_db_base.BMDBTestCase): return self._verify_response("baremetal-node-create-resp", subs, response, 200) + def _create_node_with_address(self): + address = '12:34:56:78:90:ab' + req_subs = {'address': address} + response = self._do_post("os-baremetal-nodes", + "baremetal-node-create-with-address-req", + req_subs) + subs = {'node_id': '(?P<id>\d+)', + 'interface_id': '\d+', + 'address': address} + return self._verify_response("baremetal-node-create-with-address-resp", + subs, response, 200) + def test_create_node(self): self._create_node() + def test_create_node_with_address(self): + self._create_node_with_address() + def test_list_nodes(self): node_id = self._create_node() interface_id = self._add_interface(node_id) |
