Revision 95641ecc kamaki/cli/commands/image.py
b/kamaki/cli/commands/image.py | ||
---|---|---|
199 | 199 |
size_max=IntArgument('filter by maximum size', '--size-max'), |
200 | 200 |
status=ValueArgument('filter by status', '--status'), |
201 | 201 |
owner=ValueArgument('filter by owner', '--owner'), |
202 |
owner_name=ValueArgument('filter by owners username', '--owner-name'), |
|
202 | 203 |
order=ValueArgument( |
203 | 204 |
'order by FIELD ( - to reverse order)', |
204 | 205 |
'--order', |
... | ... | |
213 | 214 |
|
214 | 215 |
def _filtered_by_owner(self, detail, *list_params): |
215 | 216 |
images = [] |
216 |
MINKEYS = set([ |
|
217 |
'id', 'size', 'status', 'disk_format', 'container_format', 'name']) |
|
217 |
ouuid = self['owner'] or self._username2uuid(self['owner_name']) |
|
218 |
if not ouuid: |
|
219 |
return images |
|
218 | 220 |
for img in self.client.list_public(True, *list_params): |
219 |
if img['owner'] == self['owner']:
|
|
221 |
if img['owner'] == ouuid:
|
|
220 | 222 |
if not detail: |
221 |
for key in set(img.keys()).difference(MINKEYS):
|
|
223 |
for key in set(img.keys()).difference(self.PERMANENTS):
|
|
222 | 224 |
img.pop(key) |
223 | 225 |
images.append(img) |
224 | 226 |
return images |
225 | 227 |
|
226 | 228 |
def _filtered_by_name(self, images): |
227 | 229 |
np, ns, nl = self['name_pref'], self['name_suff'], self['name_like'] |
228 |
return [img for img in images if ( |
|
230 |
|
|
231 |
def augment_owner(img): |
|
232 |
uuid = img.get('owner', None) |
|
233 |
if uuid and not self['json_output']: |
|
234 |
img['owner'] = '%s (%s)' % (uuid, self._uuid2username(uuid)) |
|
235 |
return img |
|
236 |
|
|
237 |
return [augment_owner(img) for img in images if ( |
|
229 | 238 |
(not np) or img['name'].lower().startswith(np.lower())) and ( |
230 | 239 |
(not ns) or img['name'].lower().endswith(ns.lower())) and ( |
231 | 240 |
(not nl) or nl.lower() in img['name'].lower())] |
... | ... | |
259 | 268 |
|
260 | 269 |
order = self['order'] |
261 | 270 |
detail = self['detail'] or self['prop'] |
262 |
if self['owner']: |
|
271 |
if self['owner'] or self['owner_name']:
|
|
263 | 272 |
images = self._filtered_by_owner(detail, filters, order) |
264 | 273 |
else: |
265 | 274 |
images = self.client.list_public(detail, filters, order) |
Also available in: Unified diff