diff options
| author | Brian Waldon <brian.waldon@rackspace.com> | 2011-09-01 17:54:52 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-09-01 17:54:52 +0000 |
| commit | dbd5acd2ba6bc9853f165d457eaf6abe7559a92e (patch) | |
| tree | 3863e731df132d98a464ff48886e79fe41658280 /nova/api | |
| parent | 12ebed39bba39b4207344b90ec26323d4c251958 (diff) | |
| parent | 9b3a6c8cda99290f0b7aff740faec0e8544aafe0 (diff) | |
| download | nova-dbd5acd2ba6bc9853f165d457eaf6abe7559a92e.tar.gz nova-dbd5acd2ba6bc9853f165d457eaf6abe7559a92e.tar.xz nova-dbd5acd2ba6bc9853f165d457eaf6abe7559a92e.zip | |
- implements changes-since for servers resource
- default sort is now created_at desc for instances
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/servers.py | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py index 1b3eddd05..977958f5d 100644 --- a/nova/api/openstack/servers.py +++ b/nova/api/openstack/servers.py @@ -106,6 +106,14 @@ class Controller(object): raise exception.InvalidInput(reason=reason) search_opts['vm_state'] = state + if 'changes-since' in search_opts: + try: + parsed = utils.parse_isotime(search_opts['changes-since']) + except ValueError: + msg = _('Invalid changes-since value') + raise exc.HTTPBadRequest(explanation=msg) + search_opts['changes-since'] = parsed + # By default, compute's get_all() will return deleted instances. # If an admin hasn't specified a 'deleted' search option, we need # to filter out deleted instances by setting the filter ourselves. @@ -113,23 +121,17 @@ class Controller(object): # should return recently deleted images according to the API spec. if 'deleted' not in search_opts: - # Admin hasn't specified deleted filter if 'changes-since' not in search_opts: - # No 'changes-since', so we need to find non-deleted servers + # No 'changes-since', so we only want non-deleted servers search_opts['deleted'] = False - else: - # This is the default, but just in case.. - search_opts['deleted'] = True - - instance_list = self.compute_api.get_all( - context, search_opts=search_opts) - # FIXME(comstud): 'changes-since' is not fully implemented. Where - # should this be filtered? + instance_list = self.compute_api.get_all(context, + search_opts=search_opts) limited_list = self._limit_items(instance_list, req) servers = [self._build_view(req, inst, is_detail)['server'] - for inst in limited_list] + for inst in limited_list] + return dict(servers=servers) @scheduler_api.redirect_handler |
