def test_associating_bgpvpn(self):
        # Create one virtual network
        vn = self.create_virtual_network('vn-%s' % self.id(), '10.0.0.0/24')
        # Create two bgpvpn with route targets
        for idx in range(2):
            bgpvpn = Bgpvpn('bgpvpn%d-%s' % (idx, self.id()))
            bgpvpn.set_route_target_list(
                RouteTargetList(['target:%d:0' % idx]))
            bgpvpn.set_import_route_target_list(
                RouteTargetList(['target:%d:1' % idx]))
            bgpvpn.set_export_route_target_list(
                RouteTargetList(['target:%d:2' % idx]))
            self._vnc_lib.bgpvpn_create(bgpvpn)
            vn.add_bgpvpn(bgpvpn)
            self._vnc_lib.virtual_network_update(vn)

        # Check bgpvpn's route targets are correctly associated to virtual
        # network's primary routing instances.
        # Check imported and exported route targets
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:0')
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:0')

        # Check imported route targets
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:1', exim='import')
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:1', exim='import')

        # Check exported route targets
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:2', exim='export')
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:2', exim='export')
    def test_associating_bgpvpn(self):
        # Create one logical with one interface on a virtual network
        lr, vns, _, _ = self.create_logical_router('lr-%s' % self.id())
        # We attached only one virtual network to the logical router
        vn = vns[0]
        # Create two bgpvpn with route targets
        for idx in range(2):
            bgpvpn = Bgpvpn('bgpvpn%d-%s' % (idx, self.id()))
            bgpvpn.set_route_target_list(
                RouteTargetList(['target:%d:0' % idx]))
            bgpvpn.set_import_route_target_list(
                RouteTargetList(['target:%d:1' % idx]))
            bgpvpn.set_export_route_target_list(
                RouteTargetList(['target:%d:2' % idx]))
            self._vnc_lib.bgpvpn_create(bgpvpn)
            lr.add_bgpvpn(bgpvpn)
            self._vnc_lib.logical_router_update(lr)

        # Check bgpvpn's route targets are correctly associated to virtual
        # network's primary routing instances of network attached to the
        # logical routers.
        # Check imported and exported route targets
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:0')
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:1:0')

        # Check imported route targets
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:1', exim='import')
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:1:1', exim='import')

        # Check exported route targets
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:0:2', exim='export')
        self.check_rt_in_ri(self.get_ri_name(vn), 'target:1:2', exim='export')
    def test_updating_bgpvpn(self):
        # Create one logical router with one private virtual network
        lr, vns, _, _ = self.create_logical_router('lr-%s' % self.id())
        # We attached only one virtual network to the logical router
        vn = vns[0]
        # Create one bgpvpn without any route target associated to the logical
        # router
        bgpvpn = Bgpvpn('bgpvpn-%s' % self.id())
        bgpvpn_id = self._vnc_lib.bgpvpn_create(bgpvpn)
        bgpvpn = self._vnc_lib.bgpvpn_read(id=bgpvpn_id)
        lr.add_bgpvpn(bgpvpn)
        self._vnc_lib.logical_router_update(lr)

        rt_name = 'target:3:1'

        # Check set/unset import and export route target
        bgpvpn.set_route_target_list(RouteTargetList([rt_name]))
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name)
        bgpvpn.set_route_target_list(RouteTargetList())
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, is_present=False)
        self.check_rt_is_deleted(rt_name)

        # Check set/unset import route target
        bgpvpn.set_import_route_target_list(RouteTargetList([rt_name]))
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, exim='import')
        bgpvpn.set_import_route_target_list(RouteTargetList())
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, is_present=False)
        self.check_rt_is_deleted(rt_name)

        # Check set/unset export route target
        bgpvpn.set_export_route_target_list(RouteTargetList([rt_name]))
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, exim='export')
        bgpvpn.set_export_route_target_list(RouteTargetList())
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, is_present=False)
        self.check_rt_is_deleted(rt_name)
    def test_updating_bgpvpn(self):
        # Create one virtual network
        vn = self.create_virtual_network('vn-%s' % self.id(), '10.0.0.0/24')
        # Create one bgpvpn without any route target associated to the virtual
        # network
        bgpvpn = Bgpvpn('bgpvpn-%s' % self.id())
        bgpvpn_id = self._vnc_lib.bgpvpn_create(bgpvpn)
        bgpvpn = self._vnc_lib.bgpvpn_read(id=bgpvpn_id)
        vn.add_bgpvpn(bgpvpn)
        self._vnc_lib.virtual_network_update(vn)

        rt_name = 'target:3:1'

        # Check set/unset import and export route target
        bgpvpn.set_route_target_list(RouteTargetList([rt_name]))
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name)
        bgpvpn.set_route_target_list(RouteTargetList())
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, is_present=False)
        self.check_rt_is_deleted(rt_name)

        # Check set/unset import route target
        bgpvpn.set_import_route_target_list(RouteTargetList([rt_name]))
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, exim='import')
        bgpvpn.set_import_route_target_list(RouteTargetList())
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, is_present=False)
        self.check_rt_is_deleted(rt_name)

        # Check set/unset export route target
        bgpvpn.set_export_route_target_list(RouteTargetList([rt_name]))
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, exim='export')
        bgpvpn.set_export_route_target_list(RouteTargetList())
        self._vnc_lib.bgpvpn_update(bgpvpn)
        self.check_rt_in_ri(self.get_ri_name(vn), rt_name, is_present=False)
        self.check_rt_is_deleted(rt_name)