summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/compute/contrib/baremetal_nodes.py18
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):