diff --git a/secdep.py b/secdep.py index de39839..2e04e00 100755 --- a/secdep.py +++ b/secdep.py @@ -8,12 +8,12 @@ # 1) create an instance # 2) delete an instance or all of them # 3) list all instances across all cloud providers -# 4) start a stopped instance -# 5) stop a running instance -# 6) reboot a running instance -# 7) list images available -# 8) list sizes available -# 9) list locations available +# 4) start a stopped instance or all of them +# 5) stop a running instance or all of them +# 6) reboot a running instance or all of them +# 7) list images available for a provider +# 8) list sizes available for a provider +# 9) list locations available for a provider # 10) run a script during the creation of a new instance # 11) ssh to an instance # from the command line using flags @@ -50,17 +50,8 @@ parser = argparse.ArgumentParser( parser.add_argument('-l', '--list', help='List all instances', action='store_true') parser.add_argument('-v', '--values', help='Change credential values', action='store_true') parser.add_argument('-P', '--provider', help='Cloud provider', choices=['gce', 'azure', 'aws']) -# parser.add_argument('-a', '--action', help='Action to perform', choices=['delete', 'start', 'stop', 'reboot']) parser.add_argument('-a', '--action', help='Action to perform on a single or all instances', choices=['delete', 'start', 'stop', 'reboot', 'deleteall', 'startall', 'stopall', 'rebootall']) parser.add_argument('-c', '--create', help='Create an instance', action='store_true') -parser.add_argument('-d', '--delete', help='Delete an instance', action='store_true') -parser.add_argument('-da', '--deleteall', help='Delete all instances', action='store_true') -# parser.add_argument('-x', '--start', help='Start an instance', action='store_true') -# parser.add_argument('-xa', '--startall', help='Start all instances', action='store_true') -# parser.add_argument('-z', '--stop', help='Stop an instance', action='store_true') -# parser.add_argument('-za', '--stopall', help='Stop all instances', action='store_true') -# parser.add_argument('-r', '--reboot', help='Reboot an instance', action='store_true') -# parser.add_argument('-ra', '--rebootall', help='Reboot all instances', action='store_true') parser.add_argument('-f', '--file', help='File to run on an instance', type=str, default=None, required=False) parser.add_argument('-I', '--listimages', help='List images', action='store_true') parser.add_argument('-S', '--listsizes', help='List sizes', action='store_true') @@ -1264,190 +1255,6 @@ def node_action_all(action): # if ip.name == node.name+"-ip": # driver.ex_delete_public_ip(ip) -# def reboot_node(): -# node = choose_from_list(list_all_nodes("reboot"), "node") -# if node is None: -# print("Nothing was chosen") -# exit(0) -# providerName = node.name.split("-")[0] -# if providerName == "gce": -# driver = get_corresponding_driver("gce") -# elif providerName == "azure": -# driver = get_corresponding_driver("azure") -# elif providerName == "aws": -# driver = get_corresponding_driver("aws") -# assert driver is not None, "Driver is not set up correctly" -# region = getAWSRegionFromAmi(node.extra['image_id']) -# driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) -# if(driver.reboot_node(node)): -# print("%s node rebooted successfully" % (providerName.upper())) -# else: -# print("%s node could not be rebooted" % (providerName.upper())) -# -# def reboot_all_nodes(): -# nodes = list_all_nodes("reboot") -# for node in nodes: -# providerName = node.name.split("-")[0] -# if providerName == "gce": -# driver = get_corresponding_driver("gce") -# elif providerName == "azure": -# driver = get_corresponding_driver("azure") -# elif providerName == "aws": -# driver = get_corresponding_driver("aws") -# assert driver is not None, "Driver is not set up correctly" -# region = getAWSRegionFromAmi(node.extra['image_id']) -# driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) -# if(driver.reboot_node(node)): -# print("%s node rebooted successfully" % (node.name)) -# else: -# print("%s node could not be rebooted" % (node.name)) -# -# def start_node(): -# node = choose_from_list(list_all_nodes("start"), "node") -# if node is None: -# print("Nothing was chosen") -# exit(0) -# providerName = node.name.split("-")[0] -# if providerName == "gce": -# driver = get_corresponding_driver("gce") -# elif providerName == "azure": -# driver = get_corresponding_driver("azure") -# elif providerName == "aws": -# driver = get_corresponding_driver("aws") -# assert driver is not None, "Driver is not set up correctly" -# region = getAWSRegionFromAmi(node.extra['image_id']) -# driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) -# if(driver.start_node(node)): -# print("%s node started successfully" % (providerName.upper())) -# else: -# print("%s node could not be started" % (providerName.upper())) -# -# def start_all_nodes(): -# nodes = list_all_nodes("start") -# for node in nodes: -# providerName = node.name.split("-")[0] -# if providerName == "gce": -# driver = get_corresponding_driver("gce") -# elif providerName == "azure": -# driver = get_corresponding_driver("azure") -# elif providerName == "aws": -# driver = get_corresponding_driver("aws") -# assert driver is not None, "Driver is not set up correctly" -# region = getAWSRegionFromAmi(node.extra['image_id']) -# driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) -# if(driver.start_node(node)): -# print("%s node started successfully" % (node.name)) -# else: -# print("%s node could not be started" % (node.name)) -# -# def stop_node(): -# node = choose_from_list(list_all_nodes("stop"), "node") -# if node is None: -# print("Nothing was chosen") -# exit(0) -# providerName = node.name.split("-")[0] -# if providerName == "gce": -# driver = get_corresponding_driver("gce") -# elif providerName == "azure": -# driver = get_corresponding_driver("azure") -# elif providerName == "aws": -# driver = get_corresponding_driver("aws") -# assert driver is not None, "Driver is not set up correctly" -# region = getAWSRegionFromAmi(node.extra['image_id']) -# driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) -# if(driver.stop_node(node)): -# print("%s node stopped successfully" % (providerName.upper())) -# else: -# print("%s node could not be stopped" % (providerName.upper())) -# -# def stop_all_nodes(): -# nodes = list_all_nodes("stop") -# for node in nodes: -# providerName = node.name.split("-")[0] -# if providerName == "gce": -# driver = get_corresponding_driver("gce") -# elif providerName == "azure": -# driver = get_corresponding_driver("azure") -# elif providerName == "aws": -# driver = get_corresponding_driver("aws") -# assert driver is not None, "Driver is not set up correctly" -# region = getAWSRegionFromAmi(node.extra['image_id']) -# driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) -# if(driver.stop_node(node)): -# print("%s node stopped successfully" % (node.name)) -# else: -# print("%s node could not be stopped" % (node.name)) - -def delete_node(): - node = choose_from_list(list_all_nodes("delete"), "node") - if node is None: - print("Nothing was chosen") - exit(0) - providerName = node.name.split("-")[0] - if providerName == "gce": - driver = get_corresponding_driver("gce") - elif providerName == "azure": - driver = get_corresponding_driver("azure") - elif providerName == "aws": - driver = get_corresponding_driver("aws") - assert driver is not None, "Driver is not set up correctly" - region = getAWSRegionFromAmi(node.extra['image_id']) - driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) - if(driver.destroy_node(node)): - print("%s node deleted successfully" % (providerName.upper())) - else: - print("%s node could not be deleted" % (providerName.upper())) - if providerName == "azure": - driver = get_corresponding_driver("azure") - node_location = node.extra['location'] - locations = driver.list_locations() - for loc in locations: - if loc.id == node_location: - location = loc - break - sec_groups = driver.ex_list_network_security_groups(SECDEP_AZURE_RESOURCE_GROUP) - for sec_group in sec_groups: - if sec_group.name == node.name+"-sec_group": - driver.ex_delete_network_security_group(name=sec_group.name, resource_group=SECDEP_AZURE_RESOURCE_GROUP, location=location) - # ips = driver.ex_list_public_ips(SECDEP_AZURE_RESOURCE_GROUP) - # for ip in ips: - # if ip.name == node.name+"-ip": - # driver.ex_delete_public_ip(ip) - -def delete_all_nodes(): - nodes = list_all_nodes("delete") - for node in nodes: - providerName = node.name.split("-")[0] - if providerName == "gce": - driver = get_corresponding_driver("gce") - elif providerName == "azure": - driver = get_corresponding_driver("azure") - elif providerName == "aws": - driver = get_corresponding_driver("aws") - assert driver is not None, "Driver is not set up correctly" - region = getAWSRegionFromAmi(node.extra['image_id']) - driver = get_driver(Provider.EC2)(SECDEP_AWS_ACCESS_KEY, SECDEP_AWS_SECRET_KEY,region=region) - if(driver.destroy_node(node)): - print("%s node deleted successfully" % (node.name)) - else: - print("%s node could not be deleted" % (node.name)) - if providerName == "azure": - driver = get_corresponding_driver("azure") - node_location = node.extra['location'] - locations = driver.list_locations() - for loc in locations: - if loc.id == node_location: - location = loc - break - sec_groups = driver.ex_list_network_security_groups(SECDEP_AZURE_RESOURCE_GROUP) - for sec_group in sec_groups: - if sec_group.name == node.name+"-sec_group": - driver.ex_delete_network_security_group(name=sec_group.name, resource_group=SECDEP_AZURE_RESOURCE_GROUP, location=location) - # ips = driver.ex_list_public_ips(SECDEP_AZURE_RESOURCE_GROUP) - # for ip in ips: - # if ip.name == node.name+"-ip": - # driver.ex_delete_public_ip(ip) - def ssh(): node = choose_from_list(list_all_nodes(), "node") ip = node.public_ips[0] @@ -1525,31 +1332,6 @@ if args.action: if args.ssh: ssh() exit(0) - -if args.delete: - delete_node() - exit(0) -if args.deleteall: - delete_all_nodes() - exit(0) -# if args.stop: -# stop_node() -# exit(0) -# if args.stopall: -# stop_all_nodes() -# exit(0) -# if args.start: -# start_node() -# exit(0) -# if args.startall: -# start_all_nodes() -# exit(0) -# if args.reboot: -# reboot_node() -# exit(0) -# if args.rebootall: -# reboot_all_nodes() -# exit(0) if args.image or args.size or args.name or args.region or args.yes and not args.create: print("Image, size, name, region and yes parameters only go along with the create flag") exit(0)