# Handle null case
return None
- if type(directive) in [dict, client.Placement]:
+ if isinstance(directive, (list, tuple)):
+ results = []
+ for d in directive:
+ results.extend(parse(d))
+ return results
+
+ if isinstance(directive, (dict, client.Placement)):
# We've been handed something that we can simply hand back to
# the api. (Forwards compatibility)
return [directive]
return [client.Placement(scope=MACHINE_SCOPE, directive=directive)]
if "/" in directive:
- machine, container, container_num = directive.split("/")
+ # e.g. "0/lxd/0"
+ # https://github.com/juju/juju/blob/master/instance/placement_test.go#L29
return [
- client.Placement(scope=MACHINE_SCOPE, directive=machine),
- client.Placement(scope=container, directive=container_num)
+ client.Placement(scope=MACHINE_SCOPE, directive=directive),
]
# Planner has probably given us a container type. Leave it up to