Beispiel #1
0
 def _pre_create_physical_router(self):
     physical_router = PhysicalRouter(name='test-physical-router')
     self.physical_router_hostname = 'test-physical-router-hostname'
     physical_router.set_fabric(self.fabric)
     physical_router.set_physical_router_hostname(
         self.physical_router_hostname)
     physical_router_uuid = self.api.physical_router_create(physical_router)
     self.physical_router = \
         self.api.physical_router_read(id=physical_router_uuid)
     # create physical_interface_red
     physical_interface_red = PhysicalInterface(
         name='test-physical-interface-red',
         parent_obj=self.physical_router)
     self.physical_interface_red_port_id = \
         'test-physical-interface-red-port-id'
     physical_interface_red.set_display_name(
         self.physical_interface_red_port_id)
     physical_interface_red_uuid = \
         self.api.physical_interface_create(physical_interface_red)
     self.physical_interface_red = \
         self.api.physical_interface_read(id=physical_interface_red_uuid)
     # create physical_interface_green
     physical_interface_green = PhysicalInterface(
         name='test-physical-interface-green',
         parent_obj=self.physical_router)
     self.physical_interface_green_port_id = \
         'test-physical-interface-green-port-id'
     physical_interface_green.set_display_name(
         self.physical_interface_green_port_id)
     physical_interface_green_uuid = \
         self.api.physical_interface_create(physical_interface_green)
     self.physical_interface_green = \
         self.api.physical_interface_read(id=physical_interface_green_uuid)
Beispiel #2
0
    def test_l2_dci_mode(self):
        """Validate l2 mode dci object create and edit operation.

        It executes following steps:
        - Create 3 fabric, each one with one PR, all PR except one PR
        should be marked not DCI-gateway.
        - Create 3 VN, two tenant VN and one routed VN

        Validate l2 mode dci create failure by doing following operation:
        - Remove two fabrics from dci and keep only one fabric in dci
        and verify create dci fails as not having two fabrics.
        - Remove all VN from dci and verify create dci fails as not
        having at least one VN.
        - Create l2 mode dci with 3 fabric and 2 tenant vn, verify it
        fails with Error of fabric does not have DCI-gateway RB role PR.
        - Remove faulty fabric. and add 3rd routed vn to dci. verify
        create operation fails with error routed vn not allowed.

        Create successfully l2 dci with 2 fabrics and 2 vn. execute
        following edit operation verification:
        - Add fabric to dci having no DCI-gw role PR, verify error.
        - Add routed vnto dci, verify error.
        : Args:
        : return:
        : it generates exception on failure
        :
        """
        dict_fabrics = {}
        dict_prs = {}
        dict_vns = {}
        non_dci_fabric_name = ''
        routed_vn_name = ''
        ipam_obj = self.create_vn_ipam(self.id())
        subnetmask = 24
        vn_starting_index = 21
        for i in range(1, 4):
            fabric_name = '%s-fabric%s' % (self.id(), str(i))
            fabric_obj = Fabric(fabric_name)
            dict_fabrics[fabric_name] = fabric_obj
            fabric_uuid = self._vnc_lib.fabric_create(fabric_obj)
            self._vnc_lib.fabric_read(id=fabric_uuid)

            pr_name = '%s-PR%s' % (self.id(), str(i))
            pr = PhysicalRouter(pr_name)
            pr.set_fabric(fabric_obj)
            if i != 3:
                pr.set_routing_bridging_roles(
                    RoutingBridgingRolesType(rb_roles=['DCI-Gateway']))
            else:
                non_dci_fabric_name = fabric_name
                pr.set_routing_bridging_roles(
                    RoutingBridgingRolesType(rb_roles=['DC-Gateway']))
            dict_prs[pr_name] = pr
            pr_uuid = self._vnc_lib.physical_router_create(pr)
            self._vnc_lib.physical_router_read(id=pr_uuid)

            subnet = "%s.0.0.0" % vn_starting_index
            vn_starting_index += 1
            vn_name = self.make_vn_name(i)
            vn_category = 'tenant'
            if i == 3:
                routed_vn_name = vn_name
                vn_category = 'routed'
            dict_vns[vn_name] = self.create_vn_with_subnets(
                i, vn_name, ipam_obj, subnet, subnetmask, vn_category)

        vn_list = []
        for vnname, obj in dict_vns.items():
            if vnname != routed_vn_name:
                vn_list.append(obj)
        fabric_list = []
        for fname, obj in dict_fabrics.items():
            if fname != non_dci_fabric_name:
                fabric_list.append(obj)

        dci_obj, dci_uuid = self._verify_l2_dci_create_edit(
            'l2_dci', dict_fabrics, dict_vns, non_dci_fabric_name,
            routed_vn_name, vn_list, fabric_list, None)

        # validate Edit Operation
        dci_obj, dci_uuid = self._verify_l2_dci_create_edit(
            'l2_dci', dict_fabrics, dict_vns, non_dci_fabric_name,
            routed_vn_name, vn_list, fabric_list, dci_obj)

        # cleanup
        self._vnc_lib.data_center_interconnect_delete(id=dci_uuid)
        for name, obj in dict_vns.items():
            self._vnc_lib.virtual_network_delete(id=obj.get_uuid())
        self._vnc_lib.network_ipam_delete(id=ipam_obj.uuid)
        for name, obj in dict_prs.items():
            self._vnc_lib.physical_router_delete(id=obj.get_uuid())
        for name, obj in dict_fabrics.items():
            self._vnc_lib.fabric_delete(id=obj.get_uuid())