Errare humanum est.
This commit is contained in:
230
secdep.py
230
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)
|
||||
|
||||
Reference in New Issue
Block a user