- keysManager = self.api.client_shell.nova.keypairs
- keyPairs = []
-
- if key_filter is not None:
- if isinstance(key_filter, (list, tuple, set, int, long)):
- keyPairs = filter(lambda kp: kp.uuid in key_filter,
- keysManager.findall())
- elif isinstance(key_filter, dict):
- keyPairs = keysManager.findall(**key_filter)
- elif isinstnace(key_filter, StringTypes):
- keyPairs = keyManagers.findall(uuid = key_filter)
- else:
- raise PLCInvalidArgument, "Wrong key filter %r"%key_filter
-
- self.extend(keyPairs)
+
+ if not key_filter:
+ keys = Key().select()
+ elif isinstance(key_filter, dict):
+ keys = Key().select(filter=key_filter)
+ elif isinstance(key_filter, StringTypes):
+ keys = Key().select(filter={'name': key_filter})
+ elif isinstance(key_filter, int):
+ keys = Key().select(filter={'key_id': key_filter})
+ elif isinstance(key_filter, (list, tuple, set)):
+ ints = filter(lambda x: isinstance(x, (int, long)), key_filter)
+ strs = filter(lambda x: isinstance(x, StringTypes), key_filter)
+ key_filter = {'key_id': ints, 'name': strs}
+ keys = Key().select(filter=key_filter)
+ else:
+ raise PLCInvalidArgument, "Wrong key filter %s" % key_filter
+
+ for key in keys:
+ key = Key(api, object=key, columns=columns)
+ self.append(key)