#!/usr/bin/python # Copyright Google, Martin J. Bligh <mbligh@google.com>, Jan 2009 import os, sys import common from autotest_lib.server import frontend try: old = frontend.AFE(web_server='http://' + sys.argv[1]) new = frontend.AFE(web_server='http://' + sys.argv[2]) hostname = sys.argv[3] print 'Migrating %s ...' % hostname old_host = old.get_hosts(hostname=hostname)[0] print old_host except Exception: print "Usage: atest_migrate_host <old_server> <new_server> <hostname>" raise sys.exit(1) # Create host new_host = new.create_host(hostname=hostname, locked=True) # Deal with labels old_host_labels = old_host.get_labels() for label in old_host_labels: # Create any non-existant labels if not new.get_labels(name=label.name): print label new_label = new.create_label(name=label.name, platform=label.platform, only_if_needed=label.only_if_needed) # Add any missing labels to the machine if not [l for l in new_host.get_labels() if l.name == label.name]: new_host.add_labels([label.name]) # Deal with ACLs old_host_acls = [a for a in old_host.get_acls() if a.name != 'Everyone'] new_users = [user.login for user in new.get_users()] for acl in old_host_acls: # Create any non-existant ACLs new_acls = new.get_acls(name=acl.name) if new_acls: new_acl = new_acls[0] else: new_acl = new.create_acl(name=acl.name, description=acl.description) # Add any users to the ACL that we can for user in acl.users: if user in new_users: new_acl.add_users([user]) else: print 'Skipping absent user %s' % user # Add any missing ACLs to the machine if not [a for a in new_host.get_acls() if a.name == acl.name]: new_host.add_acl(acl.name) # Enable the new host if not old_host.locked: new_host.modify(locked=False) # Delete host from old server old_host.delete()