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"])
Example #2
0
    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}
Example #3
0
    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)
Example #4
0
    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}
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
 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'])
Example #9
0
 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'])
Example #10
0
 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)}
Example #12
0
 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)}
Example #13
0
 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}
Example #15
0
 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)}
Example #17
0
 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)}