def _filter_by_properties(self, images): new_images = [] for img in images: props = [dict(img["properties"])] if self["prop"]: props = filter_dicts_by_dict(props, self["prop"]) if props and self["prop_like"]: props = filter_dicts_by_dict(props, self["prop_like"], exact_match=False) if props: new_images.append(img) return new_images
def _filter_by_metadata(self, images): new_images = [] for img in images: meta = [dict(img["metadata"])] if self["meta"]: meta = filter_dicts_by_dict(meta, self["meta"]) if meta and self["meta_like"]: meta = filter_dicts_by_dict(meta, self["meta_like"], exact_match=False) if meta: new_images.append(img) return new_images
def _filter_by_metadata(self, images): new_images = [] for img in images: meta = [dict(img['metadata'])] if self['meta']: meta = filter_dicts_by_dict(meta, self['meta']) if meta and self['meta_like']: meta = filter_dicts_by_dict( meta, self['meta_like'], exact_match=False) if meta: new_images.append(img) return new_images
def _filter_by_properties(self, images): new_images = [] for img in images: props = [dict(img['properties'])] if self['prop']: props = filter_dicts_by_dict(props, self['prop']) if props and self['prop_like']: props = filter_dicts_by_dict( props, self['prop_like'], exact_match=False) if props: new_images.append(img) return new_images
def _filter_by_metadata(self, servers): new_servers = [] for srv in servers: if 'metadata' not in srv: continue meta = [dict(srv['metadata'])] if self['meta']: meta = filter_dicts_by_dict(meta, self['meta']) if meta and self['meta_like']: meta = filter_dicts_by_dict( meta, self['meta_like'], exact_match=False) if meta: new_servers.append(srv) return new_servers
def _apply_common_filters(self, servers): common_filters = dict() if self['status']: common_filters['status'] = self['status'] if self['user_id'] or self['user_name']: uuid = self['user_id'] or self._username2uuid(self['user_name']) common_filters['user_id'] = uuid return filter_dicts_by_dict(servers, common_filters)
def _apply_common_filters(self, flavors): common_filters = dict() if self['ram']: common_filters['ram'] = self['ram'] if self['vcpus']: common_filters['vcpus'] = self['vcpus'] if self['disk']: common_filters['disk'] = self['disk'] if self['disk_template']: common_filters['SNF:disk_template'] = self['disk_template'] return filter_dicts_by_dict(flavors, common_filters)
def test_filter_dicts_by_dict(self): from kamaki.cli.utils import filter_dicts_by_dict dlist = [ dict(k1='v1', k2='v2', k3='v3'), dict(k1='v1'), dict(k2='v2', k3='v3'), dict(k1='V1', k3='V3'), dict()] for l, f, em, cs, exp in ( (dlist, dlist[2], True, False, dlist[0:1] + dlist[2:3]), (dlist, dlist[1], True, False, dlist[0:2] + dlist[3:4]), (dlist, dlist[1], True, True, dlist[0:2]), (dlist, {'k3': 'v'}, True, False, []), (dlist, {'k3': 'v'}, False, False, dlist[0:1] + dlist[2:4]), (dlist, {'k3': 'v'}, False, True, dlist[0:1] + dlist[2:3]), (dlist, {'k3': 'v'}, True, True, []), (dlist, dlist[4], True, False, dlist), ): self.assertEqual(exp, filter_dicts_by_dict(l, f, em, cs))
def _run(self): r = self.client.get_endpoints()['access']['serviceCatalog'] r = self._filter_by_name(r) if self['endpoint_type']: r = filter_dicts_by_dict(r, dict(type=self['endpoint_type'])) self.print_(r)
def _filter_by_user(self, images): uuid = self['user_id'] or self._username2uuid(self['user_name']) return filter_dicts_by_dict(images, dict(user_id=uuid))
def _exact_id_filter(self, items): return filter_dicts_by_dict(items, dict( id=self['id'])) if (self['id']) else items
def _filter_by_owner(self, images): ouuid = self['owner'] or self._username2uuid(self['owner_name']) return filter_dicts_by_dict(images, dict(owner=ouuid))
def _filter_by_user(self, images): uuid = self["user_id"] or self._username2uuid(self["user_name"]) return filter_dicts_by_dict(images, dict(user_id=uuid))
def _filter_by_owner(self, images): ouuid = self["owner"] or self._username2uuid(self["owner_name"]) return filter_dicts_by_dict(images, dict(owner=ouuid))
def _exact_id_filter(self, items): return filter_dicts_by_dict(items, dict(id=self['id'])) if ( self['id']) else items
def _exact_name_filter(self, items): return filter_dicts_by_dict(items, dict(name=self['name'] or '')) if ( self['name']) else items
def _exact_name_filter(self, items): return filter_dicts_by_dict(items, dict( name=self['name'] or '')) if (self['name']) else items