def test_add_interface(self): node_id = 1 address = "11:22:33:44:55:66" body = {"add_interface": {"address": address}} self.mox.StubOutWithMock(db, "bm_node_get") self.mox.StubOutWithMock(db, "bm_interface_create") self.mox.StubOutWithMock(db, "bm_interface_get") db.bm_node_get(self.context, node_id) db.bm_interface_create( self.context, bm_node_id=node_id, address=address, datapath_id=None, port_no=None ).AndReturn(12345) db.bm_interface_get(self.context, 12345).AndReturn({"id": 12345, "address": address}) self.mox.ReplayAll() res_dict = self.controller._add_interface(self.request, node_id, body) self.assertEqual(12345, res_dict["interface"]["id"]) self.assertEqual(address, res_dict["interface"]["address"])
def create(self, req, body): if _use_ironic(): _no_ironic_proxy("node-create") context = req.environ['nova.context'] authorize(context) values = body['node'].copy() prov_mac_address = values.pop('prov_mac_address', None) if (prov_mac_address is not None and not is_valid_mac(prov_mac_address)): raise webob.exc.HTTPBadRequest( explanation=_("Must specify address " "in the form of xx:xx:xx:xx:xx:xx")) node = db.bm_node_create(context, values) node = self._node_dict(node) 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'] = [] return {'node': node}
def test_destroy_with_interfaces(self): self._create_nodes() if_a_id = db.bm_interface_create(self.context, self.ids[0], 'aa:aa:aa:aa:aa:aa', None, None) if_b_id = db.bm_interface_create(self.context, self.ids[0], 'bb:bb:bb:bb:bb:bb', None, None) if_x_id = db.bm_interface_create(self.context, self.ids[1], '11:22:33:44:55:66', None, None) db.bm_node_destroy(self.context, self.ids[0]) self.assertRaises( exception.NovaException, db.bm_interface_get, self.context, if_a_id) self.assertRaises( exception.NovaException, db.bm_interface_get, self.context, if_b_id) # Another node's interface is not affected if_x = db.bm_interface_get(self.context, if_x_id) self.assertEqual(self.ids[1], if_x['bm_node_id']) self.assertRaises( exception.NodeNotFound, db.bm_node_get, self.context, self.ids[0]) r = db.bm_node_get_all(self.context) self.assertEquals(len(r), 5)
def test_destroy_with_interfaces(self): self._create_nodes() if_a_id = db.bm_interface_create(self.context, self.ids[0], 'aa:aa:aa:aa:aa:aa', None, None) if_b_id = db.bm_interface_create(self.context, self.ids[0], 'bb:bb:bb:bb:bb:bb', None, None) if_x_id = db.bm_interface_create(self.context, self.ids[1], '11:22:33:44:55:66', None, None) db.bm_node_destroy(self.context, self.ids[0]) self.assertRaises(exception.NovaException, db.bm_interface_get, self.context, if_a_id) self.assertRaises(exception.NovaException, db.bm_interface_get, self.context, if_b_id) # Another node's interface is not affected if_x = db.bm_interface_get(self.context, if_x_id) self.assertEqual(self.ids[1], if_x['bm_node_id']) self.assertRaises(exception.NodeNotFound, db.bm_node_get, self.context, self.ids[0]) r = db.bm_node_get_all(self.context) self.assertEquals(len(r), 5)
def test_create_with_prov_mac_address(self): node = { 'service_host': "host", 'cpus': 8, 'memory_mb': 8192, 'local_gb': 128, 'pm_address': "10.1.2.3", 'pm_user': "******", 'pm_password': "******", 'terminal_port': 8000, 'interfaces': [], } intf = { 'address': '1a:B2:3C:4d:e5:6f', 'datapath_id': None, 'id': None, 'port_no': None, } request = node.copy() request['prov_mac_address'] = intf['address'] db_node = node.copy() db_node['id'] = 100 response = node.copy() response.update(id=db_node['id'], instance_uuid=None, interfaces=[intf]) del response['pm_password'] self.mox.StubOutWithMock(db, 'bm_node_create') self.mox.StubOutWithMock(db, 'bm_interface_create') self.mox.StubOutWithMock(db, 'bm_interface_get') db.bm_node_create(self.context, node).AndReturn(db_node) self.ext_mgr.is_loaded('os-baremetal-ext-status').AndReturn(False) db.bm_interface_create(self.context, bm_node_id=db_node['id'], address=intf['address'], datapath_id=intf['datapath_id'], port_no=intf['port_no']).AndReturn(1000) db.bm_interface_get(self.context, 1000).AndReturn(intf) self.mox.ReplayAll() res_dict = self.controller.create(self.request, {'node': request}) self.assertEqual({'node': response}, res_dict)
def test_add_interface(self): node_id = 1 address = '11:22:33:ab:cd:ef' body = {'add_interface': {'address': address}} self.mox.StubOutWithMock(db, 'bm_node_get') self.mox.StubOutWithMock(db, 'bm_interface_create') self.mox.StubOutWithMock(db, 'bm_interface_get') db.bm_node_get(self.context, node_id) db.bm_interface_create(self.context, bm_node_id=node_id, address=address, datapath_id=None, port_no=None).\ AndReturn(12345) db.bm_interface_get(self.context, 12345).\ AndReturn({'id': 12345, 'address': address}) self.mox.ReplayAll() res_dict = self.controller._add_interface(self.request, node_id, body) self.assertEqual(12345, res_dict['interface']['id']) self.assertEqual(address, res_dict['interface']['address'])
def _add_interface(self, req, id, body): context = req.environ["nova.context"] authorize(context) self._check_node_exists(context, id) body = body["add_interface"] address = body["address"] datapath_id = body.get("datapath_id") port_no = body.get("port_no") if_id = db.bm_interface_create( context, bm_node_id=id, address=address, datapath_id=datapath_id, port_no=port_no ) if_ref = db.bm_interface_get(context, if_id) return {"interface": _interface_dict(if_ref)}
def _add_interface(self, req, id, body): context = req.environ['nova.context'] authorize(context) self._check_node_exists(context, id) body = body['add_interface'] address = body['address'] datapath_id = body.get('datapath_id') port_no = body.get('port_no') if_id = db.bm_interface_create(context, bm_node_id=id, address=address, datapath_id=datapath_id, port_no=port_no) if_ref = db.bm_interface_get(context, if_id) return {'interface': _interface_dict(if_ref)}
def create(self, req, body): context = req.environ["nova.context"] authorize(context) values = body["node"].copy() prov_mac_address = values.pop("prov_mac_address", None) node = db.bm_node_create(context, values) node = _node_dict(node) 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"] = [] return {"node": node}
def create(self, req, body): context = req.environ['nova.context'] authorize(context) values = body['node'].copy() prov_mac_address = values.pop('prov_mac_address', None) node = db.bm_node_create(context, values) node = _node_dict(node) 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'] = [] return {'node': node}
def _add_interface(self, req, id, body): context = req.environ['nova.context'] authorize(context) self._check_node_exists(context, id) body = body['add_interface'] address = body['address'] datapath_id = body.get('datapath_id') port_no = body.get('port_no') if not is_valid_mac(address): raise webob.exc.HTTPBadRequest( explanation=_("Must specify address " "in the form of xx:xx:xx:xx:xx:xx")) if_id = db.bm_interface_create(context, bm_node_id=id, address=address, datapath_id=datapath_id, port_no=port_no) if_ref = db.bm_interface_get(context, if_id) return {'interface': _interface_dict(if_ref)}