Fix lease creation when start date is not provided
Change-Id: I5fe0de436dd5e2c21ab9eb08b47c1995b5154a53 Closes-Bug: #1784038
This commit is contained in:
parent
f017a924d3
commit
1e31dcaeb5
|
@ -175,6 +175,47 @@ class CreateLeaseTestCase(tests.TestCase):
|
|||
}
|
||||
self.assertDictEqual(self.cl.args2body(args), expected)
|
||||
|
||||
def test_args2body_start_now(self):
|
||||
args = argparse.Namespace(
|
||||
start='now',
|
||||
end='2020-08-09 22:30',
|
||||
before_end='2020-08-09 21:30',
|
||||
events=[],
|
||||
name='lease-test',
|
||||
reservations=[],
|
||||
physical_reservations=[
|
||||
'min=1,'
|
||||
'max=2,'
|
||||
'hypervisor_properties='
|
||||
'["and", [">=", "$vcpus", "2"], '
|
||||
'[">=", "$memory_mb", "2048"]],'
|
||||
'resource_properties='
|
||||
'["==", "$extra_key", "extra_value"],'
|
||||
'before_end=default'
|
||||
]
|
||||
)
|
||||
expected = {
|
||||
'start': 'now',
|
||||
'end': '2020-08-09 22:30',
|
||||
'before_end': '2020-08-09 21:30',
|
||||
'events': [],
|
||||
'name': 'lease-test',
|
||||
'reservations': [
|
||||
{
|
||||
'min': 1,
|
||||
'max': 2,
|
||||
'hypervisor_properties':
|
||||
'["and", [">=", "$vcpus", "2"], '
|
||||
'[">=", "$memory_mb", "2048"]]',
|
||||
'resource_properties':
|
||||
'["==", "$extra_key", "extra_value"]',
|
||||
'resource_type': 'physical:host',
|
||||
'before_end': 'default'
|
||||
}
|
||||
]
|
||||
}
|
||||
self.assertDictEqual(self.cl.args2body(args), expected)
|
||||
|
||||
|
||||
class UpdateLeaseTestCase(tests.TestCase):
|
||||
|
||||
|
|
|
@ -177,18 +177,25 @@ class CreateLease(command.CreateCommand):
|
|||
if parsed_args.name:
|
||||
params['name'] = parsed_args.name
|
||||
if not isinstance(parsed_args.start, datetime.datetime):
|
||||
try:
|
||||
parsed_args.start = datetime.datetime.strptime(
|
||||
parsed_args.start, '%Y-%m-%d %H:%M')
|
||||
except ValueError:
|
||||
raise exception.IncorrectLease
|
||||
if parsed_args.start != 'now':
|
||||
try:
|
||||
parsed_args.start = datetime.datetime.strptime(
|
||||
parsed_args.start, '%Y-%m-%d %H:%M')
|
||||
except ValueError:
|
||||
raise exception.IncorrectLease
|
||||
if not isinstance(parsed_args.end, datetime.datetime):
|
||||
try:
|
||||
parsed_args.end = datetime.datetime.strptime(
|
||||
parsed_args.end, '%Y-%m-%d %H:%M')
|
||||
except ValueError:
|
||||
raise exception.IncorrectLease
|
||||
if parsed_args.start > parsed_args.end:
|
||||
|
||||
if parsed_args.start == 'now':
|
||||
start = datetime.datetime.utcnow()
|
||||
else:
|
||||
start = parsed_args.start
|
||||
|
||||
if start > parsed_args.end:
|
||||
raise exception.IncorrectLease
|
||||
|
||||
if parsed_args.before_end:
|
||||
|
@ -197,14 +204,17 @@ class CreateLease(command.CreateCommand):
|
|||
parsed_args.before_end, '%Y-%m-%d %H:%M')
|
||||
except ValueError:
|
||||
raise exception.IncorrectLease
|
||||
if (parsed_args.before_end < parsed_args.start
|
||||
if (parsed_args.before_end < start
|
||||
or parsed_args.end < parsed_args.before_end):
|
||||
raise exception.IncorrectLease
|
||||
params['before_end'] = datetime.datetime.strftime(
|
||||
parsed_args.before_end, '%Y-%m-%d %H:%M')
|
||||
|
||||
params['start'] = datetime.datetime.strftime(parsed_args.start,
|
||||
'%Y-%m-%d %H:%M')
|
||||
if parsed_args.start == 'now':
|
||||
params['start'] = parsed_args.start
|
||||
else:
|
||||
params['start'] = datetime.datetime.strftime(parsed_args.start,
|
||||
'%Y-%m-%d %H:%M')
|
||||
params['end'] = datetime.datetime.strftime(parsed_args.end,
|
||||
'%Y-%m-%d %H:%M')
|
||||
|
||||
|
|
Loading…
Reference in New Issue