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