Exemplo n.º 1
0
 def create_virtual_router(cls, name, node_ip=None):
     vrouter_node_ip = node_ip if node_ip else cls.get_kubernetes_node_ip()
     vrouter_obj = VirtualRouter(name,
                                 virtual_router_ip_address=vrouter_node_ip)
     try:
         vrouter_obj = cls._vnc_lib.virtual_router_read(
             fq_name=vrouter_obj.get_fq_name())
     except NoIdError:
         cls._vnc_lib.virtual_router_create(vrouter_obj)
         VirtualRouterKM.locate(vrouter_obj.uuid)
     return vrouter_obj
    def test_get_candidates(self):
        self.vnc_mock.virtual_routers_list.return_value = VROUTER_LIST

        self.analytics_mock.side_effect = [
            RUNNING_VROUTER_UVES_STATUS, RUNNING_VROUTER_UVES_STATUS,
            NON_RUNNING_VROUTER_UVES_STATUS_3,
            NON_RUNNING_VROUTER_UVES_STATUS_3, RUNNING_VROUTER_UVES_STATUS,
            RUNNING_VROUTER_UVES_STATUS, RUNNING_VROUTER_UVES_STATUS,
            RUNNING_VROUTER_UVES_STATUS, RUNNING_VROUTER_UVES_STATUS,
            RUNNING_VROUTER_UVES_STATUS
        ]

        vr_obj = VirtualRouter()
        vr_obj.get_virtual_machine_refs = mock.MagicMock(
            return_value=[{
                'uuid': 'fake_vm_uuid1'
            }])
        self.vnc_mock.virtual_router_read.return_value = vr_obj

        vm_obj_1 = VirtualMachine()
        vm_obj_1.get_service_instance_refs = mock.MagicMock(
            return_value=[{
                'uuid': 'fake_si_uuid1'
            }])
        vm_obj_2 = VirtualMachine()
        vm_obj_2.get_service_instance_refs = mock.MagicMock(
            return_value=[{
                'uuid': 'fake_si_uuid2'
            }])
        self.vnc_mock.virtual_machine_read.side_effect = [vm_obj_1, vm_obj_2]

        # Test the vrouters seected does not already have a VM of the same SI
        # schedule on it.
        expected_result = [["default-global-system-config", "vrouter3"]]
        self.assertEqual(
            self.scheduler._get_candidates('fake_si_uuid1', 'fake_vm_uuid2'),
            expected_result)

        self.analytics_mock.side_effect = [
            RUNNING_VROUTER_UVES_STATUS, RUNNING_VROUTER_UVES_STATUS,
            NON_RUNNING_VROUTER_UVES_STATUS_3,
            NON_RUNNING_VROUTER_UVES_STATUS_3, RUNNING_VROUTER_UVES_STATUS,
            RUNNING_VROUTER_UVES_STATUS, RUNNING_VROUTER_UVES_STATUS,
            RUNNING_VROUTER_UVES_STATUS, RUNNING_VROUTER_UVES_STATUS,
            RUNNING_VROUTER_UVES_STATUS
        ]
        self.vnc_mock.virtual_machine_read.side_effect = [vm_obj_1, vm_obj_2]

        # Test the same vrouter is return if the VM is already scheduled on
        # a running vrouter
        expected_result = [["default-global-system-config", "vrouter1"]]
        self.assertEqual(
            self.scheduler._get_candidates('fake_si_uuid1', 'fake_vm_uuid1'),
            expected_result)
    def test_get_candidates(self):
        VROUTER_LIST = {
            "virtual-routers": [{
                "href":
                "http://127.0.0.1:8082/virtual-router/uuid1",
                "fq_name": ["default-global-system-config", "vrouter1"],
                "uuid":
                "uuid1"
            }, {
                "href":
                "http://127.0.0.1:8082/virtual-router/uuid2",
                "fq_name": ["default-global-system-config", "vrouter2"],
                "uuid":
                "uuid2"
            }, {
                "href":
                "http://127.0.0.1:8082/virtual-router/uuid3",
                "fq_name": ["default-global-system-config", "vrouter3"],
                "uuid":
                "uuid3"
            }]
        }

        self.vnc_mock.virtual_routers_list.return_value = VROUTER_LIST

        self.analytics_mock.side_effect = [
            RUNNING_VROUTER_UVES_STATUS, NON_RUNNING_VROUTER_UVES_STATUS_3,
            RUNNING_VROUTER_UVES_STATUS
        ]

        vr_obj = VirtualRouter()
        vr_obj.get_virtual_machine_refs = mock.MagicMock(
            return_value=[{
                'uuid': 'fake_uuid'
            }])
        self.vnc_mock.virtual_router_read.return_value = vr_obj

        vm_obj_1 = VirtualMachine()
        vm_obj_1.get_service_instance_refs = mock.MagicMock(
            return_value=[{
                'uuid': 'fake_uuid'
            }])
        vm_obj_2 = VirtualMachine()
        vm_obj_2.get_service_instance_refs = mock.MagicMock(
            return_value=[{
                'uuid': 'fake_si_uuid'
            }])
        self.vnc_mock.virtual_machine_read.side_effect = [vm_obj_1, vm_obj_2]

        expected_result = [["default-global-system-config", "vrouter1"]]
        self.assertEqual(
            self.scheduler._get_candidates('fake_si_uuid', 'fake_uuid'),
            expected_result)
Exemplo n.º 4
0
 def create_virtual_router(cls, name, node_ip=None):
     vrouter_node_ip = node_ip if node_ip else cls.get_kubernetes_node_ip()
     vrouter_obj = VirtualRouter(
         name,
         virtual_router_ip_address=vrouter_node_ip)
     try:
         vrouter_obj = cls._vnc_lib.virtual_router_read(
             fq_name=vrouter_obj.get_fq_name())
     except NoIdError:
         cls._vnc_lib.virtual_router_create(vrouter_obj)
         VirtualRouterKM.locate(vrouter_obj.uuid)
     return vrouter_obj
    def test_get_candidates(self):
        self.vnc_mock.virtual_routers_list.return_value = VROUTER_LIST

        self.analytics_mock.side_effect = [RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           NON_RUNNING_VROUTER_UVES_STATUS_3,
                                           NON_RUNNING_VROUTER_UVES_STATUS_3,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS]

        vr_obj = VirtualRouter()
        vr_obj.get_virtual_machine_refs = mock.MagicMock(
            return_value=[{'uuid': 'fake_vm_uuid1'}])
        self.vnc_mock.virtual_router_read.return_value = vr_obj

        vm_obj_1 = VirtualMachine()
        vm_obj_1.get_service_instance_refs = mock.MagicMock(
            return_value=[{'uuid': 'fake_si_uuid1'}])
        vm_obj_2 = VirtualMachine()
        vm_obj_2.get_service_instance_refs = mock.MagicMock(
            return_value=[{'uuid': 'fake_si_uuid2'}])
        self.vnc_mock.virtual_machine_read.side_effect = [vm_obj_1, vm_obj_2]

        # Test the vrouters seected does not already have a VM of the same SI
        # schedule on it.
        expected_result = [["default-global-system-config", "vrouter3"]]
        self.assertEqual(self.scheduler._get_candidates('fake_si_uuid1',
                                                        'fake_vm_uuid2'),
                         expected_result)

        self.analytics_mock.side_effect = [RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           NON_RUNNING_VROUTER_UVES_STATUS_3,
                                           NON_RUNNING_VROUTER_UVES_STATUS_3,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS,
                                           RUNNING_VROUTER_UVES_STATUS]
        self.vnc_mock.virtual_machine_read.side_effect = [vm_obj_1, vm_obj_2]

        # Test the same vrouter is return if the VM is already scheduled on
        # a running vrouter
        expected_result = [["default-global-system-config", "vrouter1"]]
        self.assertEqual(self.scheduler._get_candidates('fake_si_uuid1',
                                                        'fake_vm_uuid1'),
                         expected_result)
    def test_get_candidates(self):
        VROUTER_LIST = {
                "virtual-routers": [
                    {
                        "href": "http://127.0.0.1:8082/virtual-router/uuid1",
                        "fq_name": [
                            "default-global-system-config",
                            "vrouter1"
                        ],
                        "uuid": "uuid1"
                    },
                    {
                        "href": "http://127.0.0.1:8082/virtual-router/uuid2",
                        "fq_name": [
                            "default-global-system-config",
                            "vrouter2"
                        ],
                        "uuid": "uuid2"
                    },
                    {
                        "href": "http://127.0.0.1:8082/virtual-router/uuid3",
                        "fq_name": [
                            "default-global-system-config",
                            "vrouter3"
                        ],
                        "uuid": "uuid3"
                    }
                ]
            }

        self.vnc_mock.virtual_routers_list.return_value = VROUTER_LIST

        self.analytics_mock.side_effect = [RUNNING_VROUTER_UVES_STATUS,
                                           NON_RUNNING_VROUTER_UVES_STATUS_3,
                                           RUNNING_VROUTER_UVES_STATUS]

        vr_obj = VirtualRouter()
        vr_obj.get_virtual_machine_refs = mock.MagicMock(
            return_value=[{'uuid': 'fake_uuid'}])
        self.vnc_mock.virtual_router_read.return_value = vr_obj

        vm_obj_1 = VirtualMachine()
        vm_obj_1.get_service_instance_refs = mock.MagicMock(
            return_value=[{'uuid': 'fake_uuid'}])
        vm_obj_2 = VirtualMachine()
        vm_obj_2.get_service_instance_refs = mock.MagicMock(
            return_value=[{'uuid': 'fake_si_uuid'}])
        self.vnc_mock.virtual_machine_read.side_effect = [vm_obj_1, vm_obj_2]

        expected_result = [["default-global-system-config", "vrouter1"]]
        self.assertEqual(self.scheduler._get_candidates('fake_si_uuid'),
                         expected_result)
Exemplo n.º 7
0
    def del_vrouter(self):
        gsc_obj = self._global_system_config_obj
        vrouter_obj = VirtualRouter(self._args.host_name, gsc_obj)
        vrouter_exists = True
        try:
            self._vnc_lib.virtual_router_read(
                fq_name=vrouter_obj.get_fq_name())
        except NoIdError:
            vrouter_exists = False

        if vrouter_exists:
            self._vnc_lib.virtual_router_delete(
                fq_name=vrouter_obj.get_fq_name())
        else:
            print(" vrouter object not found ")
Exemplo n.º 8
0
    def del_vhost0_vmi(self):
        gsc_obj = self._global_system_config_obj
        vrouter_obj = VirtualRouter(self._args.host_name, gsc_obj)
        vhost0_vmi_fq_name = vrouter_obj.get_fq_name()
        vhost0_vmi_fq_name.append('vhost0')
        vhost0_vmi_exists = True
        try:
            self._vnc_lib.virtual_machine_interface_read(
                fq_name=vhost0_vmi_fq_name)
        except NoIdError:
            vhost0_vmi_exists = False

        if vhost0_vmi_exists:
            self._vnc_lib.virtual_machine_interface_delete(
                fq_name=vhost0_vmi_fq_name)
            print(" Deleted vhost0 vmi %s " % vhost0_vmi_fq_name)
        else:
            print(" No vhost0 vmi found ")
Exemplo n.º 9
0
 def _pre_create_virtual_router(self):
     # create virtual_router_red
     virtual_router_red = VirtualRouter(name='test-virtual-router-red')
     virtual_router_red.set_display_name(self.node_red_hostname)
     self.physnet = "test-physnet-red"
     virtual_router_red.set_virtual_router_sriov_physical_networks(
         KeyValuePairs(
             key_value_pair=[
                 KeyValuePair(
                     key=self.physnet,
                     value=self.port_red_display_name)]))
     virtual_router_red_uuid = \
         self.api.virtual_router_create(virtual_router_red)
     self.virtual_router_red = \
         self.api.virtual_router_read(id=virtual_router_red_uuid)
     # create virtual_router_green
     virtual_router_green = VirtualRouter(name='test-virtual-router-green')
     virtual_router_green.set_display_name(self.node_green_hostname)
     virtual_router_green.set_virtual_router_sriov_physical_networks(
         KeyValuePairs(
             key_value_pair=[
                 KeyValuePair(
                     key=self.physnet,
                     value=self.port_green_display_name)]))
     virtual_router_green_uuid = \
         self.api.virtual_router_create(virtual_router_green)
     self.virtual_router_green = \
         self.api.virtual_router_read(id=virtual_router_green_uuid)
Exemplo n.º 10
0
    def add_vrouter(self):
        gsc_obj = self._global_system_config_obj

        if self._args.ip_fabric_subnet:
            ip_subnet, mask = self._args.ip_fabric_subnet.split('/')
            so = SubnetType(ip_subnet, int(mask))
            sl = gsc_obj.get_ip_fabric_subnets()
            if sl is None:
                gsc_obj.set_ip_fabric_subnets(SubnetListType([so]))
                self._vnc_lib.global_system_config_update(gsc_obj)
            elif so not in sl.subnet:
                sl.subnet.append(so)
                gsc_obj.set_ip_fabric_subnets(sl)
                self._vnc_lib.global_system_config_update(gsc_obj)

        vrouter_obj = VirtualRouter(
            self._args.host_name,
            gsc_obj,
            virtual_router_ip_address=self._args.host_ip)
        vrouter_exists = True

        try:
            vrouter_obj = self._vnc_lib.virtual_router_read(
                fq_name=vrouter_obj.get_fq_name())
        except NoIdError:
            vrouter_exists = False

        if self._args.sub_cluster_name:
            sub_cluster_obj = SubCluster(self._args.sub_cluster_name)
            try:
                sub_cluster_obj = self._vnc_lib.sub_cluster_read(
                    fq_name=sub_cluster_obj.get_fq_name())
            except NoIdError:
                raise RuntimeError("Sub cluster has to be provisioned first")
            vrouter_obj.add_sub_cluster(sub_cluster_obj)

        # Configure router type
        if self._args.router_type:
            vrouter_obj.set_virtual_router_type(self._args.router_type)
        if self._args.dpdk_enabled:
            vrouter_obj.set_virtual_router_dpdk_enabled(True)
        else:
            vrouter_obj.set_virtual_router_dpdk_enabled(False)

        # Configure sirov physical networks
        if self._args.sriov_physnets:
            vrouter_obj.set_virtual_router_sriov_physical_networks(
                self._args.sriov_physnets)
        if vrouter_exists:
            self.vrouter_fq_name = vrouter_obj.get_fq_name()
            self._vnc_lib.virtual_router_update(vrouter_obj)
        else:
            try:
                self.vrouter_fq_name = vrouter_obj.get_fq_name()
                self._vnc_lib.virtual_router_create(vrouter_obj)
            except RefsExistError:
                print("Already created!")