diff --git a/demo4-scale-out-destroy.py b/demo4-scale-out-destroy.py new file mode 100644 index 0000000..6de50e2 --- /dev/null +++ b/demo4-scale-out-destroy.py @@ -0,0 +1,98 @@ +import getpass +import os + +#import libcloud.security +import time +from libcloud.compute.providers import get_driver +from libcloud.compute.types import Provider + +# reqs: +# services: nova, glance, neutron +# resources: 2 instances (m1.small), 2 floating ips (1 keypair, 2 security groups) + +# Please use 1-25 for X in username, project etc., as coordinated in the lab sessions + +# web service endpoint of the private cloud infrastructure +auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000' +# your username in OpenStack +auth_username = 'CloudCompX' +# your project in OpenStack +project_name = 'CloudCompGrpX' + +# default region +region_name = 'RegionOne' +# domain to use, "default" for local accounts, "hsfulda" for LDAP of DVZ, e.g., using fdaiXXXX as auth_username +domain_name = "default" + +ubuntu_image_name = "Ubuntu 14.04 - Trusty Tahr - 64-bit - Cloud Based Image" + +flavor_name = 'm1.small' + +network_name = "CloudCompX-net" + +keypair_name = 'srieger-pub' +pub_key_file = '~/.ssh/id_rsa.pub' + + +def main(): + ########################################################################### + # + # get credentials + # + ########################################################################### + + if "OS_PASSWORD" in os.environ: + auth_password = os.environ["OS_PASSWORD"] + else: + auth_password = getpass.getpass("Enter your OpenStack password:") + + ########################################################################### + # + # create connection + # + ########################################################################### + + #libcloud.security.VERIFY_SSL_CERT = False + + provider = get_driver(Provider.OPENSTACK) + conn = provider(auth_username, + auth_password, + ex_force_auth_url=auth_url, + ex_force_auth_version='3.x_password', + ex_tenant_name=project_name, + ex_force_service_region=region_name, + ex_domain_name=domain_name) + + ########################################################################### + # + # clean up resources from previous demos + # + ########################################################################### + + # destroy running demo instances + for instance in conn.list_nodes(): + if instance.name in ['all-in-one', 'app-worker-1', 'app-worker-2', 'app-worker-3', 'app-controller', + 'app-services', 'app-api-1', 'app-api-2']: + print('Destroying Instance: %s' % instance.name) + conn.destroy_node(instance) + + # wait until all nodes are destroyed to be able to remove depended security groups + nodes_still_running = True + while nodes_still_running: + nodes_still_running = False + time.sleep(3) + instances = conn.list_nodes() + for instance in instances: + # if we see any demo instances still running continue to wait for them to stop + if instance.name in ['all-in-one', 'app-worker-1', 'app-worker-2', 'app-controller']: + nodes_still_running = True + print('There are still instances running, waiting for them to be destroyed...') + + # delete security groups + for group in conn.ex_list_security_groups(): + if group.name in ['control', 'worker', 'api', 'services']: + print('Deleting security group: %s' % group.name) + conn.ex_delete_security_group(group) + +if __name__ == '__main__': + main() diff --git a/demo4-scale-out.py b/demo4-scale-out.py index 53b61e7..6ab5ebc 100644 --- a/demo4-scale-out.py +++ b/demo4-scale-out.py @@ -1,7 +1,7 @@ import getpass import os -import libcloud.security +#import libcloud.security import time from libcloud.compute.providers import get_driver from libcloud.compute.types import Provider @@ -28,7 +28,7 @@ ubuntu_image_name = "Ubuntu 14.04 - Trusty Tahr - 64-bit - Cloud Based Image" flavor_name = 'm1.small' -network_name = "ai-netlab-pro-net" +network_name = "CloudCompX-net" keypair_name = 'srieger-pub' pub_key_file = '~/.ssh/id_rsa.pub' @@ -52,7 +52,7 @@ def main(): # ########################################################################### - libcloud.security.VERIFY_SSL_CERT = False + #libcloud.security.VERIFY_SSL_CERT = False provider = get_driver(Provider.OPENSTACK) conn = provider(auth_username,