diff options
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/compute/contrib/baremetal_nodes.py | 18 |
1 files changed, 15 insertions, 3 deletions
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): |
