From f1f463314a3e45321d1adb1130fbfb86245254f1 Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Tue, 21 Apr 2020 15:47:51 +0200 Subject: [PATCH] updated demo1 --- demo1-getting-started.py | 53 ++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/demo1-getting-started.py b/demo1-getting-started.py index 6039763..79b5ee4 100644 --- a/demo1-getting-started.py +++ b/demo1-getting-started.py @@ -1,34 +1,43 @@ # Example for Cloud Computing Course Master AI / GSD # -# based on the tutorial: https://developer.openstack.org/firstapp-libcloud/ # uses libCloud: https://libcloud.apache.org/ # libCloud API documentation: https://libcloud.readthedocs.io/en/latest/ # OpenStack API documentation: https://developer.openstack.org/ +# this code was initially based on the former tutorial: https://developer.openstack.org/firstapp-libcloud/ import getpass from libcloud.compute.providers import get_driver from libcloud.compute.types import Provider -# Please use 1-25 for X in username, project etc., as coordinated in the lab sessions +# Please use 1-29 for X in the following variable to specify your group number. (will be used for the username, +# project etc., as coordinated in the lab sessions) + +group_number = 30 + +######################################################################################################################## +# +# no changes necessary below this line +# +######################################################################################################################## # web service endpoint of the private cloud infrastructure -auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000' +auth_url = 'https://private-cloud.informatik.hs-fulda.de:5000' # your username in OpenStack -auth_username = 'CloudCompX' +auth_username = 'CloudComp' + str(group_number) # your project in OpenStack -project_name = 'CloudCompGrpX' +project_name = 'CloudComp' + str(group_number) +# A network in the project the started instance will be attached to +project_network = 'CloudComp' + str(group_number) + '-net' + +# The image to look for and use for the started instance +ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image" # 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" -# The image to look for and use for the started instance -ubuntu_image_name = "Ubuntu 14.04 - Trusty Tahr - 64-bit - Cloud Based Image" -# A network in the project the started instance will be attached to -project_network = "CloudCompGrpX-net" - def main(): # get the password from user @@ -39,6 +48,9 @@ def main(): # make sure to include ex_domain_name and ex_force_auth_version='3.x_password', as they are needed in our # environment provider = get_driver(Provider.OPENSTACK) + + print("Opening connection to %s as %s..." % (auth_url, auth_username)) + conn = provider(auth_username, auth_password, ex_force_auth_url=auth_url, @@ -47,6 +59,9 @@ def main(): ex_force_service_region=region_name, ex_domain_name=domain_name) + print("Getting images and selecting desired one...") + print("=========================================================================") + # get a list of images offered in the cloud context (e.g. Ubuntu 14.04, Ubuntu 16.04, cirros, ...) images = conn.list_images() image = '' @@ -55,16 +70,25 @@ def main(): image = img print(img) + print("Getting flavors...") + print("=========================================================================") + # get a list of flavors offered in the cloud context (e.g. m1.small, m1.medium, ...) flavors = conn.list_sizes() for flavor in flavors: print(flavor) + print("Selecting desired flavor...") + print("=========================================================================") + # get the flavor with id 2 flavor_id = '2' flavor = conn.ex_get_size(flavor_id) print(flavor) + print("Selecting desired network...") + print("=========================================================================") + # get a list of networks in the cloud context networks = conn.ex_list_networks() network = '' @@ -72,17 +96,26 @@ def main(): if net.name == project_network: network = net + print("Create instance 'testing'...") + print("=========================================================================") + # create a new instance with the name "testing" # make sure to provide networks (networks={network}) the instance should be attached to instance_name = 'testing' testing_instance = conn.create_node(name=instance_name, image=image, size=flavor, networks={network}) print(testing_instance) + print("Showing all running instances...") + print("=========================================================================") + # show all instances (running nodes) in the cloud context instances = conn.list_nodes() for instance in instances: print(instance) + print("Destroying instance...") + print("=========================================================================") + # destroy the instance we have just created conn.destroy_node(testing_instance)