Errare humanum est.

This commit is contained in:
2023-03-17 02:06:42 +02:00
parent 696062ad3a
commit bf96cdc75b

230
secdep.py
View File

@@ -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)