diff --git a/novaclient/v1_1/shell.py b/novaclient/v1_1/shell.py index 1ef42bae5..65cc925ce 100644 --- a/novaclient/v1_1/shell.py +++ b/novaclient/v1_1/shell.py @@ -97,12 +97,16 @@ def _boot(cs, args, reservation_id=None, min_count=None, max_count=None): hints = {} if 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: - hints = {} + for hint in args.scheduler_hints: + key, _sep, value = hint.partition('=') + # NOTE(vish): multiple copies of the same hint will + # result in a list of values + if key in hints: + if isinstance(hints[key], basestring): + hints[key] = [hints[key]] + hints[key] += [value] + else: + hints[key] = value boot_args = [args.name, image, flavor] if str(args.config_drive).lower() in ("true", "1"):