Exemplo n.º 1
0
    def setUp(self, plugin=None, ext_mgr=None):
        cfg.CONF.keystone_authtoken = KeyStoneInfo()
        from neutron_plugin_contrail import extensions
        cfg.CONF.api_extensions_path = "extensions:" + extensions.__path__[0]
        res_handler = ContrailResourceHandler

        # mimic the project id format change
        @staticmethod
        def mock_proj_id_vnc_to_neutron(y):
            if y is not None:
                return y.lower()
            return y

        @staticmethod
        def mock_proj_id_neutron_to_vnc(y):
            if y is not None:
                return y.upper()
            return y

        res_handler._project_id_vnc_to_neutron = mock_proj_id_vnc_to_neutron
        res_handler._project_id_neutron_to_vnc = mock_proj_id_neutron_to_vnc

        utils.get_vnc_api_instance = lambda *args, **kwargs: MockVnc()
        self.domain_obj = vnc_api.Domain()
        MockVnc().domain_create(self.domain_obj)

        self._neutron_set_user_auth_token = NeutronPluginContrailCoreV3._set_user_auth_token
        NeutronPluginContrailCoreV3._set_user_auth_token = lambda *args, **kwargs: None

        super(JVContrailPluginTestCase, self).setUp(self._plugin_name)
    def setUp(self, plugin=None, ext_mgr=None):

        cfg.CONF.keystone_authtoken = KeyStoneInfo()
        from neutron_plugin_contrail import extensions
        cfg.CONF.api_extensions_path = "extensions:" + extensions.__path__[0]
        res_handler = contrail_res_handler.ContrailResourceHandler

        # mimic the project id format change
        @staticmethod
        def mock_proj_id_vnc_to_neutron(y):
            if y is not None:
                return y.lower()
            return y

        @staticmethod
        def mock_proj_id_neutron_to_vnc(y):
            if y is not None:
                return y.upper()
            return y

        res_handler._project_id_vnc_to_neutron = mock_proj_id_vnc_to_neutron
        res_handler._project_id_neutron_to_vnc = mock_proj_id_neutron_to_vnc

        vnc_api.VncApi = MockVnc
        self.domain_obj = vnc_api.Domain()
        MockVnc().domain_create(self.domain_obj)

        super(JVContrailPluginTestCase, self).setUp(self._plugin_name)
Exemplo n.º 3
0
    def handle_create(self):
        obj_0 = vnc_api.Domain(name=self.properties[self.NAME])

        if self.properties.get(self.DISPLAY_NAME) is not None:
            obj_0.set_display_name(self.properties.get(self.DISPLAY_NAME))
        if self.properties.get(self.DOMAIN_LIMITS) is not None:
            obj_1 = vnc_api.DomainLimitsType()
            if self.properties.get(self.DOMAIN_LIMITS, {}).get(
                    self.DOMAIN_LIMITS_PROJECT_LIMIT) is not None:
                obj_1.set_project_limit(
                    self.properties.get(self.DOMAIN_LIMITS, {}).get(
                        self.DOMAIN_LIMITS_PROJECT_LIMIT))
            if self.properties.get(self.DOMAIN_LIMITS, {}).get(
                    self.DOMAIN_LIMITS_VIRTUAL_NETWORK_LIMIT) is not None:
                obj_1.set_virtual_network_limit(
                    self.properties.get(self.DOMAIN_LIMITS, {}).get(
                        self.DOMAIN_LIMITS_VIRTUAL_NETWORK_LIMIT))
            if self.properties.get(self.DOMAIN_LIMITS, {}).get(
                    self.DOMAIN_LIMITS_SECURITY_GROUP_LIMIT) is not None:
                obj_1.set_security_group_limit(
                    self.properties.get(self.DOMAIN_LIMITS, {}).get(
                        self.DOMAIN_LIMITS_SECURITY_GROUP_LIMIT))
            obj_0.set_domain_limits(obj_1)

        try:
            obj_uuid = super(ContrailDomain, self).resource_create(obj_0)
        except:
            raise Exception(_('domain %s could not be updated.') % self.name)

        self.resource_id_set(obj_uuid)
Exemplo n.º 4
0
 def sync_domain_to_vnc(self, domain_id):
     self._get_keystone_conn()
     self._get_vnc_conn()
     ks_domain = \
         self._ks_domain_get(domain_id.replace('-', ''))
     dom_obj = vnc_api.Domain(ks_domain['name'])
     dom_obj.uuid = domain_id
     self._vnc_lib.domain_create(dom_obj)
Exemplo n.º 5
0
    def setUp(self, plugin=None, ext_mgr=None):

        cfg.CONF.keystone_authtoken = KeyStoneInfo()
        from neutron_plugin_contrail import extensions
        cfg.CONF.api_extensions_path = "extensions:" + extensions.__path__[0]
        res_handler = contrail_res_handler.ContrailResourceHandler
        res_handler._project_id_vnc_to_neutron = lambda x, y: y
        res_handler._project_id_neutron_to_vnc = lambda x, y: y
        vnc_api.VncApi = MockVnc
        self.domain_obj = vnc_api.Domain()
        MockVnc().domain_create(self.domain_obj)

        super(JVContrailPluginTestCase, self).setUp(self._plugin_name)
Exemplo n.º 6
0
 def _create_no_rule_sg(self):
     domain_obj = vnc_api.Domain(SG_NO_RULE_FQ_NAME[0])
     proj_obj = vnc_api.Project(SG_NO_RULE_FQ_NAME[1], domain_obj)
     sg_rules = vnc_api.PolicyEntriesType()
     id_perms = vnc_api.IdPermsType(
         enable=True,
         description="Security group with no rules",
         user_visible=False)
     sg_obj = vnc_api.SecurityGroup(name=SG_NO_RULE_NAME,
                                    parent_obj=proj_obj,
                                    security_group_entries=sg_rules,
                                    id_perms=id_perms)
     self._resource_create(sg_obj)
     return sg_obj
Exemplo n.º 7
0
    def _get_netipam_obj(self, ipam_fq_name=None, vn_obj=None):
        if ipam_fq_name:
            domain_name, project_name, ipam_name = ipam_fq_name

            domain_obj = vnc_api.Domain(domain_name)
            project_obj = vnc_api.Project(project_name, domain_obj)
            netipam_obj = vnc_api.NetworkIpam(ipam_name, project_obj)
            return netipam_obj

        if vn_obj:
            try:
                ipam_fq_name = vn_obj.get_fq_name()[:-1]
                ipam_fq_name.append('default-network-ipam')
                netipam_obj = self._vnc_lib.network_ipam_read(
                    fq_name=ipam_fq_name)
            except vnc_exc.NoIdError:
                netipam_obj = vnc_api.NetworkIpam()
            return netipam_obj
Exemplo n.º 8
0
    def sync_domain_to_vnc(self, domain_id):
        self._get_keystone_conn()
        self._get_vnc_conn()
        ks_domain = \
            self._ks_domain_get(domain_id.replace('-', ''))
        display_name = ks_domain['name']

        # if earlier domain exists with same name but diff id,
        # create with uniqified fq_name
        fq_name = [display_name]
        try:
            old_id = self._vnc_lib.fq_name_to_id('domain', fq_name)
            domain_name = '%s-%s' % (display_name, str(uuid.uuid4()))
        except vnc_api.NoIdError:
            domain_name = display_name

        dom_obj = vnc_api.Domain(domain_name)
        dom_obj.uuid = domain_id
        self._vnc_lib.domain_create(dom_obj)
Exemplo n.º 9
0
    def sync_domain_to_vnc(self, domain_id):
        self._get_keystone_conn()
        self._get_vnc_conn()
        ks_domain = \
            self._ks_domain_get(domain_id.replace('-', ''))
        display_name = ks_domain['name']
        domain_name = display_name

        # if earlier domain exists with same name but diff id,
        # create with uniqified fq_name
        fq_name = [display_name]
        try:
            old_id = self._vnc_lib.fq_name_to_id('domain', fq_name)
            if domain_id == old_id:
                self._vnc_domain_ids.add(domain_id)
                return

            # Domain might have been quickly deleted + added.
            # Since domain delete sync happens only in timer(polling),
            # try deleting old one synchronously. If delete fails due
            # to resources being present in domain, proceed/fail
            # based on configuration
            try:
                self._vnc_lib.domain_delete(fq_name=fq_name)
            except vnc_api.NoIdError:
                pass
            except vnc_api.RefsExistError:
                if self._resync_stale_mode == 'new_unique_fqn':
                    domain_name = '%s-%s' % (display_name, str(uuid.uuid4()))
                else:
                    errmsg = "Old domain %s fqn %s exists and not empty" % (
                        old_id, fq_name)
                    self._sandesh_logger.error(errmsg)
                    raise Exception(errmsg)
        except vnc_api.NoIdError:
            pass

        dom_obj = vnc_api.Domain(domain_name)
        dom_obj.display_name = display_name
        dom_obj.uuid = domain_id
        self._vnc_lib.domain_create(dom_obj)
        self._vnc_domain_ids.add(domain_id)
Exemplo n.º 10
0
    def neutron_dict_to_vn(self, vn_obj, network_q):
        net_name = network_q.get('name')
        if net_name:
            vn_obj.display_name = net_name

        id_perms = vn_obj.get_id_perms()
        if 'admin_state_up' in network_q:
            id_perms.enable = network_q['admin_state_up']
            vn_obj.set_id_perms(id_perms)

        if 'policys' in network_q:
            policy_fq_names = network_q['policys']
            # reset and add with newly specified list
            vn_obj.set_network_policy_list([], [])
            seq = 0
            for p_fq_name in policy_fq_names:
                domain_name, project_name, policy_name = p_fq_name

                domain_obj = vnc_api.Domain(domain_name)
                project_obj = vnc_api.Project(project_name, domain_obj)
                policy_obj = vnc_api.NetworkPolicy(policy_name, project_obj)

                vn_obj.add_network_policy(
                    policy_obj,
                    vnc_api.VirtualNetworkPolicyType(
                        sequence=vnc_api.SequenceType(seq, 0)))
                seq = seq + 1

        if 'route_table' in network_q:
            rt_fq_name = network_q['route_table']
            if rt_fq_name:
                try:
                    rt_obj = self._vnc_lib.route_table_read(fq_name=rt_fq_name)
                    vn_obj.set_route_table(rt_obj)
                except vnc_api.NoIdError:
                    # TODO() add route table specific exception
                    self._raise_contrail_exception(
                        'NetworkNotFound', net_id=vn_obj.uuid,
                        resource='network')

        return vn_obj
Exemplo n.º 11
0
def project():
    proj = vnc_api.Project(name='project-name',
                           parent_obj=vnc_api.Domain(name='domain-name'))
    proj.set_uuid('project-uuid')
    return proj