diff --git a/os_migrate_setup.py b/os_migrate_setup.py new file mode 100644 index 0000000..4e2fdbe --- /dev/null +++ b/os_migrate_setup.py @@ -0,0 +1,127 @@ +""" +Quick and dirty script to help setup project, flavors, networks, images +""" +import argparse +import json +import os +import subprocess + +def openstack_cmd(cmd): + cmd = "OS_CLOUD=standalone openstack " + cmd + + result = subprocess.check_output(cmd, shell=True, universal_newlines=True) + return result + +def parse_args(): + """Parse the command line arguments""" + + home = os.environ.get('HOME') + + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--project-domain", default="default") + parser.add_argument("-n", "--project-name", default="test-project") + parser.add_argument("-D", "--project-description", default="Test project") + parser.add_argument("-u", "--username", default="test-user") + parser.add_argument("-p", "--password", default="secrete123") + parser.add_argument("-c", "--cloud", default="standalone") + + args = parser.parse_args() + + return args + + +def create_project(args): + cmd = "project list -f json" + project_exists = [ + x for x in json.loads(openstack_cmd(cmd)) + if x["Name"] == args.project_name + ] + + if project_exists: + print(f"Project {args.project_name} already exists. Skipping creation") + args.project_id = project_exists[0]["ID"] + return + + cmd = ( + f"project create -f json --description '{args.project_description}' " + f"{args.project_name} --domain {args.project_domain}" + ) + + args.project_id = json.loads(openstack_cmd(cmd))["id"] + + print(f"Project created - id: {args.project_id}") + +def create_user(args): + cmd = "user list -f json" + user_exists = [ + x for x in json.loads(openstack_cmd(cmd)) + if x["Name"] == args.username + ] + + if user_exists: + print(f"User {args.username} already exists. Skipping creation") + args.user_id = user_exists[0]["ID"] + return + + cmd = ( + f"user create -f json --project {args.project_id} " + f"--password {args.password} {args.username}" + ) + + args.user_id = json.loads(openstack_cmd(cmd))["id"] + + print(f"User created - id: {args.user_id}") + +def assign_member_role(args): + cmd = f"openstack role add --user {args.username} --project {args.project_id} member" + print(cmd) + +def create_public_network(args): + print("creating public network - NYI") + +def create_private_network(args): + print("creating private network - NYI") + +def create_cirros_flavor(args): + print("creating cirros flavor - NYI") + +def create_rhel_flavor(args): + print("creating rhel flavor - NYI") + +def create_cirros_image(args): + print("creating cirros image - NYI") + +def create_rhel_image(args): + print("creating rhel image - NYI") + +def create_cirros_instance(args): + print("creating cirros instance - NYI") + +def create_rhel_instance(args): + print("creating rhel instance - NYI") + +def main(): + """main function""" + args = parse_args() + + create_project(args) + print (args.project_id) + create_user(args) + assign_member_role(args) + + create_public_network(args) + create_private_network(args) + + create_cirros_flavor(args) + create_rhel_flavor(args) + + create_cirros_image(args) + create_rhel_image(args) + + create_cirros_instance(args) + create_rhel_instance(args) + + + +if __name__ == "__main__": + main()