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))
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
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
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
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
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 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))
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))