Merge "Limit hint/nic parsing to one split on '='"

This commit is contained in:
Jenkins 2012-05-03 22:41:29 +00:00 committed by Gerrit Code Review
commit 997a472983
3 changed files with 43 additions and 6 deletions

View File

@ -91,14 +91,14 @@ def _boot(cs, args, reservation_id=None, min_count=None, max_count=None):
for nic_str in args.nics:
nic_info = {"net-id": "", "v4-fixed-ip": ""}
for kv_str in nic_str.split(","):
k, v = kv_str.split("=")
k, v = kv_str.split("=", 1)
nic_info[k] = v
nics.append(nic_info)
hints = {}
if args.scheduler_hints:
hint_set = [dict({hint[0]: hint[1]}) for hint in \
[hint_set.split('=') for hint_set in args.scheduler_hints]]
parsed_hints = [hint.split('=', 1) for hint in args.scheduler_hints]
hint_set = [dict({hint[0]: hint[1]}) for hint in parsed_hints]
for hint in hint_set:
hints.update(hint.items())
else:

View File

@ -204,7 +204,7 @@ class FakeHTTPClient(base_client.HTTPClient):
]})
def post_servers(self, body, **kw):
assert body.keys() == ['server']
assert set(body.keys()) <= set(['server', 'os:scheduler_hints'])
fakes.assert_has_keys(body['server'],
required=['name', 'imageRef', 'flavorRef'],
optional=['metadata', 'personality'])

View File

@ -81,7 +81,8 @@ class ShellTest(utils.TestCase):
}},
)
self.run_command('boot --image 1 --flavor 1 --meta foo=bar'
def test_boot_metadata(self):
self.run_command('boot --image 1 --flavor 1 --meta foo=bar=pants'
' --meta spam=eggs some-server ')
self.assert_called_anytime(
'POST', '/servers',
@ -89,12 +90,48 @@ class ShellTest(utils.TestCase):
'flavorRef': '1',
'name': 'some-server',
'imageRef': '1',
'metadata': {'foo': 'bar', 'spam': 'eggs'},
'metadata': {'foo': 'bar=pants', 'spam': 'eggs'},
'min_count': 1,
'max_count': 1,
}},
)
def test_boot_hints(self):
self.run_command('boot --image 1 --flavor 1 --hint a=b=c some-server ')
self.assert_called_anytime(
'POST', '/servers',
{
'server': {
'flavorRef': '1',
'name': 'some-server',
'imageRef': '1',
'min_count': 1,
'max_count': 1,
},
'os:scheduler_hints': {'a': 'b=c'},
},
)
def test_boot_nics(self):
cmd = ('boot --image 1 --flavor 1 '
'--nic net-id=a=c,v4-fixed-ip=10.0.0.1 some-server')
self.run_command(cmd)
self.assert_called_anytime(
'POST', '/servers',
{
'server': {
'flavorRef': '1',
'name': 'some-server',
'imageRef': '1',
'min_count': 1,
'max_count': 1,
'networks': [
{'uuid': 'a=c', 'fixed_ip': '10.0.0.1'},
],
},
},
)
def test_boot_files(self):
testfile = os.path.join(os.path.dirname(__file__), 'testfile.txt')
expected_file_data = open(testfile).read().encode('base64')