def _test_create(self, node, ext_status=False):
     response = node.copy()
     del response['pm_password']
     response['instance_uuid'] = None
     self.mox.StubOutWithMock(db, 'bm_node_create')
     db.bm_node_create(self.context, node).AndReturn(response)
     self.ext_mgr.is_loaded('os-baremetal-ext-status').AndReturn(ext_status)
     self.mox.ReplayAll()
     res_dict = self.controller.create(self.request, {'node': node})
     self.assertEqual({'node': response}, res_dict)
Beispiel #2
0
 def create(self, req, body):
     context = req.environ['nova.context']
     authorize(context)
     node = db.bm_node_create(context, body['node'])
     node = _node_dict(node)
     node['interfaces'] = []
     return {'node': node}
Beispiel #3
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}
Beispiel #4
0
    def _create_node(self, node_info=None, nic_info=None):
        result = {}
        if node_info is None:
            node_info = bm_db_utils.new_bm_node(id=123, service_host="test_host", cpus=2, memory_mb=2048)
        if nic_info is None:
            nic_info = [
                {"address": "01:23:45:67:89:01", "datapath_id": "0x1", "port_no": 1},
                {"address": "01:23:45:67:89:02", "datapath_id": "0x2", "port_no": 2},
            ]
        result["node_info"] = node_info
        result["nic_info"] = nic_info
        result["node"] = db.bm_node_create(self.context, node_info)

        for nic in nic_info:
            db.bm_interface_create(
                self.context, result["node"]["id"], nic["address"], nic["datapath_id"], nic["port_no"]
            )
        result["instance"] = utils.get_test_instance()
        result["instance"]["node"] = result["node"]["uuid"]
        result["spawn_params"] = dict(
            admin_password="******",
            block_device_info=None,
            context=self.context,
            image_meta=utils.get_test_image_info(None, result["instance"]),
            injected_files=[("/fake/path", "hello world")],
            instance=result["instance"],
            network_info=utils.get_test_network_info(),
        )
        result["destroy_params"] = dict(
            instance=result["instance"],
            network_info=result["spawn_params"]["network_info"],
            block_device_info=result["spawn_params"]["block_device_info"],
        )

        return result
    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)
Beispiel #6
0
def _create_baremetal_stuff():
    context = test_utils.get_test_admin_context()
    node = db.bm_node_create(context, NODE)
    for nic in NICS:
        db.bm_interface_create(context,
                               node['id'],
                               nic['address'],
                               nic['datapath_id'],
                               nic['port_no'])
    return node
 def _create_node(self):
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(
                                 self.context,
                                 self.node['id'],
                                 nic['address'],
                                 nic['datapath_id'],
                                 nic['port_no'],
             )
     self.instance['node'] = self.node['id']
 def test_create(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': [],
     }
     response = node.copy()
     response['id'] = 100
     del response['pm_password']
     response['instance_uuid'] = None
     self.mox.StubOutWithMock(db, 'bm_node_create')
     db.bm_node_create(self.context, node).AndReturn(response)
     self.mox.ReplayAll()
     res_dict = self.controller.create(self.request, {'node': node})
     self.assertEqual({'node': response}, res_dict)
 def test_create(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": [],
     }
     response = node.copy()
     response["id"] = 100
     del response["pm_password"]
     response["instance_uuid"] = None
     self.mox.StubOutWithMock(db, "bm_node_create")
     db.bm_node_create(self.context, node).AndReturn(response)
     self.mox.ReplayAll()
     res_dict = self.controller.create(self.request, {"node": node})
     self.assertEqual({"node": response}, res_dict)
Beispiel #10
0
    def _create_node(self, node_info=None, nic_info=None, ephemeral=True):
        result = {}
        if node_info is None:
            node_info = bm_db_utils.new_bm_node(
                            id=123,
                            service_host='test_host',
                            cpus=2,
                            memory_mb=2048,
                        )
        if nic_info is None:
            nic_info = [
                    {'address': '01:23:45:67:89:01', 'datapath_id': '0x1',
                        'port_no': 1},
                    {'address': '01:23:45:67:89:02', 'datapath_id': '0x2',
                        'port_no': 2},
                ]
        result['node_info'] = node_info
        result['nic_info'] = nic_info
        result['node'] = db.bm_node_create(self.context, node_info)

        for nic in nic_info:
            db.bm_interface_create(
                                    self.context,
                                    result['node']['id'],
                                    nic['address'],
                                    nic['datapath_id'],
                                    nic['port_no'],
                )
        if ephemeral:
            result['instance'] = utils.get_test_instance()
        else:
            flavor = utils.get_test_instance_type(options={'ephemeral_gb': 0})
            result['instance'] = utils.get_test_instance(instance_type=flavor)
        result['instance']['node'] = result['node']['uuid']
        result['spawn_params'] = dict(
                admin_password='******',
                block_device_info=None,
                context=self.context,
                image_meta=utils.get_test_image_info(
                                None, result['instance']),
                injected_files=[('/fake/path', 'hello world')],
                instance=result['instance'],
                network_info=utils.get_test_network_info(),
            )
        result['destroy_params'] = dict(
                context=self.context,
                instance=result['instance'],
                network_info=result['spawn_params']['network_info'],
                block_device_info=result['spawn_params']['block_device_info'],
            )

        return result
Beispiel #11
0
 def _create_node(self):
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(self.context, self.node["id"], nic["address"], nic["datapath_id"], nic["port_no"])
     self.instance["node"] = self.node["id"]
     self.spawn_params = dict(
         admin_password="******",
         block_device_info=self.test_block_device_info,
         context=self.context,
         image_meta=utils.get_test_image_info(None, self.instance),
         injected_files=[("/fake/path", "hello world")],
         instance=self.instance,
         network_info=self.test_network_info,
     )
Beispiel #12
0
 def _create_nodes(self):
     nodes = [
         utils.new_bm_node(pm_address="0", service_host="host1", memory_mb=100000, cpus=100, local_gb=10000),
         utils.new_bm_node(
             pm_address="1", service_host="host2", instance_uuid="A", memory_mb=100000, cpus=100, local_gb=10000
         ),
         utils.new_bm_node(pm_address="2", service_host="host2", memory_mb=1000, cpus=1, local_gb=1000),
         utils.new_bm_node(pm_address="3", service_host="host2", memory_mb=1000, cpus=2, local_gb=1000),
         utils.new_bm_node(pm_address="4", service_host="host2", memory_mb=2000, cpus=1, local_gb=1000),
         utils.new_bm_node(pm_address="5", service_host="host2", memory_mb=2000, cpus=2, local_gb=1000),
     ]
     self.ids = []
     for n in nodes:
         ref = db.bm_node_create(self.context, n)
         self.ids.append(ref["id"])
Beispiel #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}
Beispiel #14
0
 def _create_node(self):
     # File injection is off by default, but we should continue to test it
     # until it is removed.
     CONF.set_override("use_file_injection", True, "baremetal")
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(self.context, self.node["id"], nic["address"], nic["datapath_id"], nic["port_no"])
     self.instance["node"] = self.node["id"]
     self.spawn_params = dict(
         admin_password="******",
         block_device_info=self.test_block_device_info,
         context=self.context,
         image_meta=utils.get_test_image_info(None, self.instance),
         injected_files=[("/fake/path", "hello world")],
         instance=self.instance,
         network_info=self.test_network_info,
     )
 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}
Beispiel #16
0
 def _create_nodes(self):
     nodes = [
         utils.new_bm_node(pm_address='0', service_host="host1",
                           memory_mb=100000, cpus=100, local_gb=10000),
         utils.new_bm_node(pm_address='1', service_host="host2",
                           instance_uuid='A',
                           memory_mb=100000, cpus=100, local_gb=10000),
         utils.new_bm_node(pm_address='2', service_host="host2",
                            memory_mb=1000, cpus=1, local_gb=1000),
         utils.new_bm_node(pm_address='3', service_host="host2",
                            memory_mb=1000, cpus=2, local_gb=1000),
         utils.new_bm_node(pm_address='4', service_host="host2",
                            memory_mb=2000, cpus=1, local_gb=1000),
         utils.new_bm_node(pm_address='5', service_host="host2",
                            memory_mb=2000, cpus=2, local_gb=1000),
     ]
     self.ids = []
     for n in nodes:
         ref = db.bm_node_create(self.context, n)
         self.ids.append(ref['id'])
Beispiel #17
0
 def _create_node(self):
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(
                                 self.context,
                                 self.node['id'],
                                 nic['address'],
                                 nic['datapath_id'],
                                 nic['port_no'],
             )
     self.instance['node'] = self.node['id']
     self.spawn_params = dict(
             admin_password='******',
             block_device_info=self.test_block_device_info,
             context=self.context,
             image_meta=utils.get_test_image_info(None,
                                                     self.instance),
             injected_files=[('/fake/path', 'hello world')],
             instance=self.instance,
             network_info=self.test_network_info,
         )
Beispiel #18
0
 def _create_node(self):
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(
                                 self.context,
                                 self.node['id'],
                                 nic['address'],
                                 nic['datapath_id'],
                                 nic['port_no'],
             )
     self.instance['node'] = self.node['id']
     self.spawn_params = dict(
             admin_password='******',
             block_device_info=self.test_block_device_info,
             context=self.context,
             image_meta=utils.get_test_image_info(None,
                                                     self.instance),
             injected_files=[('/fake/path', 'hello world')],
             instance=self.instance,
             network_info=self.test_network_info,
         )
Beispiel #19
0
 def _create_nodes(self):
     nodes = [
         utils.new_bm_node(pm_address='0',
                           service_host="host1",
                           memory_mb=100000,
                           cpus=100,
                           local_gb=10000),
         utils.new_bm_node(pm_address='1',
                           service_host="host2",
                           instance_uuid='A',
                           memory_mb=100000,
                           cpus=100,
                           local_gb=10000),
         utils.new_bm_node(pm_address='2',
                           service_host="host2",
                           memory_mb=1000,
                           cpus=1,
                           local_gb=1000),
         utils.new_bm_node(pm_address='3',
                           service_host="host2",
                           memory_mb=1000,
                           cpus=2,
                           local_gb=1000),
         utils.new_bm_node(pm_address='4',
                           service_host="host2",
                           memory_mb=2000,
                           cpus=1,
                           local_gb=1000),
         utils.new_bm_node(pm_address='5',
                           service_host="host2",
                           memory_mb=2000,
                           cpus=2,
                           local_gb=1000),
     ]
     self.ids = []
     for n in nodes:
         ref = db.bm_node_create(self.context, n)
         self.ids.append(ref['id'])
Beispiel #20
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)
     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}
Beispiel #21
0
 def _create_node(self):
     # File injection is off by default, but we should continue to test it
     # until it is removed.
     CONF.set_override('use_file_injection', True, 'baremetal')
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(
             self.context,
             self.node['id'],
             nic['address'],
             nic['datapath_id'],
             nic['port_no'],
         )
     self.instance['node'] = self.node['id']
     self.spawn_params = dict(
         admin_password='******',
         block_device_info=self.test_block_device_info,
         context=self.context,
         image_meta=utils.get_test_image_info(None, self.instance),
         injected_files=[('/fake/path', 'hello world')],
         instance=self.instance,
         network_info=self.test_network_info,
     )
Beispiel #22
0
 def _create_node(self):
     # File injection is off by default, but we should continue to test it
     # until it is removed.
     CONF.set_override('use_file_injection', True, 'baremetal')
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(
                                 self.context,
                                 self.node['id'],
                                 nic['address'],
                                 nic['datapath_id'],
                                 nic['port_no'],
             )
     self.instance['node'] = self.node['id']
     self.spawn_params = dict(
             admin_password='******',
             block_device_info=self.test_block_device_info,
             context=self.context,
             image_meta=utils.get_test_image_info(None,
                                                     self.instance),
             injected_files=[('/fake/path', 'hello world')],
             instance=self.instance,
             network_info=self.test_network_info,
         )
Beispiel #23
0
 def test_bm_pxe_ip_associate(self):
     self._create_pxe_ip()
     node = db.bm_node_create(self.context, utils.new_bm_node())
     ip_id = db.bm_pxe_ip_associate(self.context, node['id'])
     ref = db.bm_pxe_ip_get(self.context, ip_id)
     self.assertEqual(ref['bm_node_id'], node['id'])
 def _create_node(self):
     self.node = db.bm_node_create(self.context, self.node_info)
     for nic in self.nic_info:
         db.bm_interface_create(self.context, self.node["id"], nic["address"], nic["datapath_id"], nic["port_no"])
     self.instance["node"] = self.node["id"]
Beispiel #25
0
 def test_bm_pxe_ip_associate(self):
     self._create_pxe_ip()
     node = db.bm_node_create(self.context, utils.new_bm_node())
     ip_id = db.bm_pxe_ip_associate(self.context, node['id'])
     ref = db.bm_pxe_ip_get(self.context, ip_id)
     self.assertEqual(ref['bm_node_id'], node['id'])
Beispiel #26
0
    def _create_node(self, node_info=None, nic_info=None, ephemeral=True):
        result = {}
        if node_info is None:
            node_info = bm_db_utils.new_bm_node(
                id=123,
                service_host='test_host',
                cpus=2,
                memory_mb=2048,
            )
        if nic_info is None:
            nic_info = [
                {
                    'address': '01:23:45:67:89:01',
                    'datapath_id': '0x1',
                    'port_no': 1
                },
                {
                    'address': '01:23:45:67:89:02',
                    'datapath_id': '0x2',
                    'port_no': 2
                },
            ]
        result['node_info'] = node_info
        result['nic_info'] = nic_info
        result['node'] = db.bm_node_create(self.context, node_info)

        for nic in nic_info:
            db.bm_interface_create(
                self.context,
                result['node']['id'],
                nic['address'],
                nic['datapath_id'],
                nic['port_no'],
            )
        if ephemeral:
            result['instance'] = utils.get_test_instance()
        else:
            flavor = utils.get_test_flavor(options={'ephemeral_gb': 0})
            result['instance'] = utils.get_test_instance(flavor=flavor)
        result['instance']['node'] = result['node']['uuid']
        result['spawn_params'] = dict(
            admin_password='******',
            block_device_info=None,
            context=self.context,
            image_meta=utils.get_test_image_info(None, result['instance']),
            injected_files=[('/fake/path', 'hello world')],
            instance=result['instance'],
            network_info=utils.get_test_network_info(),
        )
        result['destroy_params'] = dict(
            context=self.context,
            instance=result['instance'],
            network_info=result['spawn_params']['network_info'],
            block_device_info=result['spawn_params']['block_device_info'],
        )

        instance = objects.Instance._from_db_object(self.context,
                                                    objects.Instance(),
                                                    result['instance'])
        instance.node = result['node']['uuid']

        result['rebuild_params'] = dict(
            context=self.context,
            instance=instance,
            image_meta=utils.get_test_image_info(None, result['instance']),
            injected_files=[('/fake/path', 'hello world')],
            admin_password='******',
            bdms={},
            detach_block_devices=self.mox.CreateMockAnything(),
            attach_block_devices=self.mox.CreateMockAnything(),
            network_info=result['spawn_params']['network_info'],
            block_device_info=result['spawn_params']['block_device_info'],
        )

        return result