Example #1
0
 def test_filter_resource_fails_with_list_of_values(self):
     filters = {
         'fake_attribute': ['wrong_fake_value1'],
     }
     self.assertFalse(filter_resource(self._fake_resource_string, filters))
     filters = {
         'fake_attribute': ['wrong_fake_value1', 'fake_value2'],
     }
     self.assertFalse(filter_resource(self._fake_resource_list, filters))
Example #2
0
 def test_filter_resource_succeeds_with_list_of_values(self):
     filters = {
         'fake_attribute': ['fake_value1'],
     }
     self.assertTrue(filter_resource(self._fake_resource_string, filters))
     filters = {
         'fake_attribute': ['fake_value1', 'fake_value2'],
     }
     self.assertTrue(filter_resource(self._fake_resource_list, filters))
    def get_bgpvpns(self, context, filters=None, fields=None):
        LOG.debug("get_bgpvpns called, fields = %s, filters = %s" % (fields, filters))

        oc_client = self._get_opencontrail_api_client(context)

        bgpvpns = []
        for kv_dict in oc_client.kv_store("RETRIEVE"):
            try:
                value = json.loads(kv_dict["value"])
            except ValueError:
                continue
            if isinstance(value, dict) and "bgpvpn" in value and utils.filter_resource(value["bgpvpn"], filters):
                bgpvpns.append(utils.make_bgpvpn_dict(value["bgpvpn"], fields))

        if not context.is_admin:
            return [bgpvpn for bgpvpn in bgpvpns if bgpvpn["tenant_id"] == context.tenant_id]

        return bgpvpns
Example #4
0
 def get_router_assocs(self, context, bgpvpn_id, filters=None, fields=None):
     try:
         bgpvpn_obj = self._vnc_api.bgpvpn_read(
             id=bgpvpn_id, fields=['logical_router_back_refs'])
     except vnc_exc.NoIdError:
         raise bgpvpn_ext.BGPVPNNotFound(id=bgpvpn_id)
     bgpvpn_router_assocs = []
     for lr_ref in bgpvpn_obj.get_logical_router_back_refs() or []:
         bgpvpn_router_assoc = bgpvpn_utils.make_router_assoc_dict(
             lr_ref['uuid'],
             bgpvpn_obj.parent_uuid.replace('-', ''),
             bgpvpn_id,
             lr_ref['uuid'],
             fields,
         )
         if bgpvpn_utils.filter_resource(bgpvpn_router_assoc, filters):
             bgpvpn_router_assocs.append(bgpvpn_router_assoc)
     return bgpvpn_router_assocs
Example #5
0
 def get_bgpvpns(self, context, filters=None, fields=None):
     bgpvpns = []
     if 'name' in filters:
         filters['display_name'] = filters.pop('name')
     if 'type' in filters:
         filters['bgpvpn_type'] = filters.pop('type')
     try:
         for bgpvpn_obj in self._vnc_api.bgpvpns_list(
                 obj_uuids=filters.pop('id', None),
                 parent_id=self._validate_project_ids(context, filters),
                 detail=True,
                 filters=filters,
                 fields=fields):
             bgpvpn_dict = self._bgpvpn_to_neutron_dict(bgpvpn_obj)
             if bgpvpn_utils.filter_resource(bgpvpn_dict, filters):
                 bgpvpns.append(bgpvpn_dict)
     except vnc_exc.BadRequest as e:
         raise neutron_exc.BadRequest(resource='bgpvpn', msg=str(e))
     return bgpvpns
    def get_net_assocs(self, context, bgpvpn_id, filters=None, fields=None):
        LOG.debug("get_net_assocs called for bgpvpn %s, fields = %s, "
                  "filters = %s" % (bgpvpn_id, fields, filters))

        oc_client = self._get_opencontrail_api_client(context)

        get_fields = ['tenant_id', 'route_targets', 'import_targets',
                      'export_targets']
        bgpvpn = self.get_bgpvpn(context, bgpvpn_id, fields=get_fields)

        bgpvpn_net_assocs = []
        for kv_dict in oc_client.kv_store('RETRIEVE'):
            try:
                value = json.loads(kv_dict['value'])
            except ValueError:
                continue
            if (isinstance(value, dict) and
                    'bgpvpn_net_assoc' in value and
                    utils.filter_resource(value['bgpvpn_net_assoc'],
                                          filters) and
                    value['bgpvpn_net_assoc']['bgpvpn_id'] == bgpvpn_id):
                net_assoc = value['bgpvpn_net_assoc']
                # If the network was delete all bgpvpn related association
                # should be deleted also
                try:
                    oc_client.id_to_fqname(net_assoc['network_id'])
                except oc_exc.OpenContrailAPINotFound:
                    self._set_bgpvpn_association(oc_client, 'DELETE', bgpvpn,
                                                 [net_assoc['network_id']])
                    oc_client.kv_store('DELETE', key=net_assoc['id'])
                    continue
                net_assoc = utils.make_net_assoc_dict(net_assoc['id'],
                                                      net_assoc['tenant_id'],
                                                      net_assoc['bgpvpn_id'],
                                                      net_assoc['network_id'],
                                                      fields)
                bgpvpn_net_assocs.append(net_assoc)

        return bgpvpn_net_assocs
Example #7
0
    def get_net_assocs(self, context, bgpvpn_id, filters=None, fields=None):
        LOG.debug("get_net_assocs called for bgpvpn %s, fields = %s, "
                  "filters = %s" % (bgpvpn_id, fields, filters))

        oc_client = self._get_opencontrail_api_client(context)

        get_fields = [
            'tenant_id', 'route_targets', 'import_targets', 'export_targets'
        ]
        bgpvpn = self.get_bgpvpn(context, bgpvpn_id, fields=get_fields)

        bgpvpn_net_assocs = []
        for kv_dict in oc_client.kv_store('RETRIEVE'):
            try:
                value = json.loads(kv_dict['value'])
            except ValueError:
                continue
            if (isinstance(value, dict)
                    and 'bgpvpn_net_assoc' in value and utils.filter_resource(
                        value['bgpvpn_net_assoc'], filters)
                    and value['bgpvpn_net_assoc']['bgpvpn_id'] == bgpvpn_id):
                net_assoc = value['bgpvpn_net_assoc']
                # If the network was delete all bgpvpn related association
                # should be deleted also
                try:
                    oc_client.id_to_fqname(net_assoc['network_id'])
                except oc_exc.OpenContrailAPINotFound:
                    self._set_bgpvpn_association(oc_client, 'DELETE', bgpvpn,
                                                 [net_assoc['network_id']])
                    oc_client.kv_store('DELETE', key=net_assoc['id'])
                    continue
                net_assoc = utils.make_net_assoc_dict(net_assoc['id'],
                                                      net_assoc['tenant_id'],
                                                      net_assoc['bgpvpn_id'],
                                                      net_assoc['network_id'],
                                                      fields)
                bgpvpn_net_assocs.append(net_assoc)

        return bgpvpn_net_assocs
Example #8
0
    def get_bgpvpns(self, context, filters=None, fields=None):
        LOG.debug("get_bgpvpns called, fields = %s, filters = %s" %
                  (fields, filters))

        oc_client = self._get_opencontrail_api_client(context)

        bgpvpns = []
        for kv_dict in oc_client.kv_store('RETRIEVE'):
            try:
                value = json.loads(kv_dict['value'])
            except ValueError:
                continue
            if (isinstance(value, dict) and 'bgpvpn' in value
                    and utils.filter_resource(value['bgpvpn'], filters)):
                bgpvpn = value['bgpvpn']
                if not fields or 'networks' in fields:
                    bgpvpn['networks'] = \
                        [net_assoc['network_id'] for net_assoc in
                         self.get_net_assocs(context, bgpvpn['id'])]
                bgpvpns.append(utils.make_bgpvpn_dict(bgpvpn, fields))

        return bgpvpns
    def get_bgpvpns(self, context, filters=None, fields=None):
        LOG.debug("get_bgpvpns called, fields = %s, filters = %s"
                  % (fields, filters))

        oc_client = self._get_opencontrail_api_client(context)

        bgpvpns = []
        for kv_dict in oc_client.kv_store('RETRIEVE'):
            try:
                value = json.loads(kv_dict['value'])
            except ValueError:
                continue
            if (isinstance(value, dict) and
                    'bgpvpn' in value and
                    utils.filter_resource(value['bgpvpn'], filters)):
                bgpvpn = value['bgpvpn']
                if not fields or 'networks' in fields:
                    bgpvpn['networks'] = \
                        [net_assoc['network_id'] for net_assoc in
                         self.get_net_assocs(context, bgpvpn['id'])]
                bgpvpns.append(utils.make_bgpvpn_dict(bgpvpn, fields))

        return bgpvpns
Example #10
0
 def test_filter_resource_fails_with_one_value(self):
     filters = {
         'fake_attribute': 'wrong_fake_value1',
     }
     self.assertFalse(filter_resource(self._fake_resource_string, filters))
     self.assertFalse(filter_resource(self._fake_resource_list, filters))
Example #11
0
 def test_filter_resource_succeeds_with_one_value(self):
     filters = {
         'fake_attribute': 'fake_value1',
     }
     self.assertTrue(filter_resource(self._fake_resource_string, filters))
     self.assertTrue(filter_resource(self._fake_resource_list, filters))