Merge "Add restrictions on updated_at when getting instance action records"
This commit is contained in:
commit
88db2f9c0a
@ -465,6 +465,9 @@ changes_before_instance_action:
|
||||
The ``±hh:mm`` value, if included, returns the time zone as an offset from UTC.
|
||||
For example, ``2015-08-27T09:49:58-05:00``.
|
||||
If you omit the time zone, the UTC time zone is assumed.
|
||||
When both ``changes-since`` and ``changes-before`` are specified,
|
||||
the value of the ``changes-before`` must be later than or equal to
|
||||
the value of the ``changes-since`` otherwise API will return 400.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
@ -525,6 +528,9 @@ changes_since_instance_action:
|
||||
The ``±hh:mm`` value, if included, returns the time zone as an offset from UTC.
|
||||
For example, ``2015-08-27T09:49:58-05:00``.
|
||||
If you omit the time zone, the UTC time zone is assumed.
|
||||
When both ``changes-since`` and ``changes-before`` are specified,
|
||||
the value of the ``changes-since`` must be earlier than or equal to
|
||||
the value of the ``changes-before`` otherwise API will return 400.
|
||||
in: query
|
||||
required: false
|
||||
type: string
|
||||
|
@ -110,6 +110,12 @@ class InstanceActionsController(wsgi.Controller):
|
||||
if 'changes-before' in search_opts:
|
||||
search_opts['changes-before'] = timeutils.parse_isotime(
|
||||
search_opts['changes-before'])
|
||||
changes_since = search_opts.get('changes-since')
|
||||
if (changes_since and search_opts['changes-before'] <
|
||||
search_opts['changes-since']):
|
||||
msg = _('The value of changes-since must be less than '
|
||||
'or equal to changes-before.')
|
||||
raise exc.HTTPBadRequest(explanation=msg)
|
||||
|
||||
limit, marker = common.get_limit_and_marker(req)
|
||||
try:
|
||||
|
@ -14,7 +14,9 @@
|
||||
# under the License.
|
||||
|
||||
import copy
|
||||
import datetime
|
||||
|
||||
import iso8601
|
||||
import mock
|
||||
from oslo_policy import policy as oslo_policy
|
||||
from oslo_utils.fixture import uuidsentinel as uuids
|
||||
@ -30,6 +32,7 @@ from nova import objects
|
||||
from nova import policy
|
||||
from nova import test
|
||||
from nova.tests.unit.api.openstack import fakes
|
||||
from nova.tests.unit import fake_instance
|
||||
from nova.tests.unit import fake_server_actions
|
||||
|
||||
|
||||
@ -340,6 +343,40 @@ class InstanceActionsTestV266(InstanceActionsTestV258):
|
||||
self.assertIn('Invalid input for query parameters changes-before',
|
||||
six.text_type(ex))
|
||||
|
||||
@mock.patch('nova.compute.api.InstanceActionAPI.actions_get')
|
||||
@mock.patch('nova.api.openstack.common.get_instance')
|
||||
def test_get_action_with_changes_since_and_changes_before(
|
||||
self, mock_get_instance, mock_action_get):
|
||||
param = 'changes-since=2012-12-05T00:00:00Z&' \
|
||||
'changes-before=2012-12-05T01:00:00Z'
|
||||
req = self._get_http_req_with_version('os-instance-actions?%s' %
|
||||
param, use_admin_context=True,
|
||||
version=self.wsgi_api_version)
|
||||
instance = fake_instance.fake_instance_obj(req.environ['nova.context'])
|
||||
mock_get_instance.return_value = instance
|
||||
|
||||
self.controller.index(req, FAKE_UUID)
|
||||
filters = {'changes-since': datetime.datetime(
|
||||
2012, 12, 5, 0, 0, tzinfo=iso8601.iso8601.UTC),
|
||||
'changes-before': datetime.datetime(
|
||||
2012, 12, 5, 1, 0, tzinfo=iso8601.iso8601.UTC)}
|
||||
mock_action_get.assert_called_once_with(req.environ['nova.context'],
|
||||
instance, limit=1000,
|
||||
marker=None,
|
||||
filters=filters)
|
||||
|
||||
def test_instance_actions_filters_with_distinct_changes_time_bad_request(
|
||||
self):
|
||||
changes_since = '2018-09-04T05:45:27Z'
|
||||
changes_before = '2018-09-03T05:45:27Z'
|
||||
req = self._get_http_req('os-instance-actions?'
|
||||
'changes-since=%s&changes-before=%s' %
|
||||
(changes_since, changes_before))
|
||||
ex = self.assertRaises(exc.HTTPBadRequest, self.controller.index,
|
||||
req, FAKE_UUID)
|
||||
self.assertIn('The value of changes-since must be less than '
|
||||
'or equal to changes-before', six.text_type(ex))
|
||||
|
||||
def test_get_action_with_changes_before_old_microversion(self):
|
||||
"""Tests that the changes-before query parameter is an error before
|
||||
microversion 2.66.
|
||||
|
Loading…
x
Reference in New Issue
Block a user