from autotest_lib.frontend.shared import rest_client
from autotest_lib.server import frontend

planner_rpc = frontend.Planner()
afe_rest = rest_client.Resource.load('http://%(server)s/afe/server/resources')


label = afe_rest.labels.get(name='%(label_name)s').members[0].get()

def run(machine):
    hostname = hosts.create_host(machine).hostname
    host = afe_rest.hosts.get(hostname=hostname).members[0]
    label.hosts.post({'host': host})

job.parallel_simple(run, machines)

planner_rpc.run('modify_plan', id=%(plan_id)d, initialized=True)
