Пример #1
0
    def _test_add_vnic(self, mock_mo, mock_handle, pxe=False):
        with task_manager.acquire(self.context, self.node.uuid,
                                  shared=False) as task:
            with mock_handle(task) as handle:
                first_mock = mock.MagicMock()
                second_mock = mock.MagicMock()
                mock_mo.side_effect = [first_mock, second_mock]

                mo = handle.get_imc_managedobject.return_value
                mo.__getitem__.return_value.Dn = "DN"
                handle.xml_query.return_value.error_code = None

                dn = "DN/host-eth-name"

                common.add_vnic(task, "name", "mac_address", 600, pxe)

                mock_mo.assert_any_call("adaptorEthGenProfile")
                mock_mo.assert_any_call("adaptorHostEthIf")

                first_mock.set_attr.assert_any_call("name", "name")
                first_mock.set_attr.assert_any_call("mtu", "1500")
                first_mock.set_attr.assert_any_call(
                    "pxeBoot", "enabled" if pxe else "disabled")
                first_mock.set_attr.assert_any_call("Dn", dn)
                first_mock.set_attr.assert_any_call("mac", "mac_address")
                first_mock.set_attr.assert_any_call("uplinkPort", "1")

                second_mock.set_attr.assert_any_call("vlanMode", "ACCESS")
                second_mock.set_attr.assert_any_call("vlan", "600")
                second_mock.set_attr.assert_any_call("Dn", dn)

                handle.xml_query.assert_called_once_with(
                    imcsdk.ImcCore.ExternalMethod.return_value,
                    imcsdk.WriteXmlOption.DIRTY)
Пример #2
0
    def _plug_provisioning(self, task, **kwargs):
        LOG.debug("Plugging the provisioning!")
        if task.node.power_state != states.POWER_ON:
            manager_utils.node_power_action(task, states.REBOOT)

        client = neutron._build_client(task.context.auth_token)
        port = client.create_port({
            'port': {
                "network_id":
                    CONF.neutron.cleaning_network_uuid,
                "extra_dhcp_opts":
                    pxe_utils.dhcp_options_for_instance(task),
            }
        })

        name = port['port']['id']
        network = client.show_network(port['port']['network_id'])
        seg_id = network['network']['provider:segmentation_id']

        try:
            common.add_vnic(
                task, name, port['port']['mac_address'], seg_id, True)
        except imcsdk.ImcException:
            client.delete_port(name)
            raise

        new_port = objects.Port(
            task.context, node_id=task.node.id,
            address=port['port']['mac_address'],
            extra={"vif_port_id": port['port']['id'],
                   "type": "deploy", "state": "ACTIVE"})
        new_port.create()
        return port['port']['fixed_ips'][0]['ip_address']
Пример #3
0
 def test_add_vnic_long_name(self, mock_mo, mock_handle):
     with task_manager.acquire(self.context, self.node.uuid,
                               shared=False) as task:
         with mock_handle(task) as handle:
             mo = handle.get_imc_managedobject.return_value
             mo.__getitem__.return_value.Dn = "DN"
             handle.xml_query.return_value.error_code = None
             dn = "DN/host-eth-namenamenamenamenamenamenamenam"
             common.add_vnic(
                 task, "namenamenamenamenamenamenamenamename",
                 "mac_address", 600)
             mock_mo.return_value.set_attr.assert_any_call("Dn", dn)
Пример #4
0
 def _plug_tenant_networks(self, task, **kwargs):
     ports = objects.Port.list_by_node_id(task.context, task.node.id)
     for port in ports:
         pargs = port['extra']
         if pargs.get('type') == "tenant" and pargs['state'] == "DOWN":
             try:
                 common.add_vnic(
                     task, pargs['vif_port_id'], port['address'],
                     pargs['seg_id'], pargs['pxe'])
             except imcsdk.ImcException:
                 port.extra = {x: pargs[x] for x in pargs}
                 port.extra['state'] = "ERROR"
                 LOG.error("ADDING VNIC FAILED")
             else:
                 port.extra = {x: pargs[x] for x in pargs}
                 port.extra['state'] = "UP"
                 LOG.info("ADDING VNIC SUCCESSFUL")
             port.save()