From 1e0f29d21e2335e30cbbd904f504821d8d962836 Mon Sep 17 00:00:00 2001 From: Karen Pailozian <pailozian@cesnet.cz> Date: Mon, 28 Apr 2025 11:14:07 +0200 Subject: [PATCH 1/3] Add sample notebook for starting VM on Openstack from jupyter hub --- figures/network_topology.png | Bin 0 -> 61299 bytes figures/network_topology_vm.png | Bin 0 -> 61764 bytes figures/scheme.png | Bin 0 -> 44529 bytes openstack_eosc.ipynb | 1088 +++++++++++++++++++++++++++++++ 4 files changed, 1088 insertions(+) create mode 100644 figures/network_topology.png create mode 100644 figures/network_topology_vm.png create mode 100644 figures/scheme.png create mode 100644 openstack_eosc.ipynb diff --git a/figures/network_topology.png b/figures/network_topology.png new file mode 100644 index 0000000000000000000000000000000000000000..9be438f5aa2011de40cbb52aa79bf9cd05fc63c4 GIT binary patch literal 61299 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 PjYxR9`njxgN@xNA=h>49 literal 0 HcmV?d00001 diff --git a/figures/network_topology_vm.png b/figures/network_topology_vm.png new file mode 100644 index 0000000000000000000000000000000000000000..edec41fb7e16dd9daf49b9c3556548e80e5e1bbc GIT binary patch literal 61764 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�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 UK%B)vG#M1~p00i_>zopr07pS;y8r+H literal 0 HcmV?d00001 diff --git a/figures/scheme.png b/figures/scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..006afb061f74732d52c986023db19952531aaea1 GIT binary patch literal 44529 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 literal 0 HcmV?d00001 diff --git a/openstack_eosc.ipynb b/openstack_eosc.ipynb new file mode 100644 index 0000000..41e2050 --- /dev/null +++ b/openstack_eosc.ipynb @@ -0,0 +1,1088 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f1d44b71-9709-467e-92d4-c1faa31a93e7", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "# Deploying Your First Virtual Machine on PSNC OpenStack\n", + "\n", + "Welcome to this hands-on tutorial for launching and configuring your first Virtual Machine (VM) in the PSNC OpenStack cloud environment. This guide will walk you through each step of the deployment processโfrom authentication to full VM provisioning and access.\n", + "\n", + "๐ **Further reading:** [PSNC OpenStack Virtual Machines](https://docs.psnc.pl/display/EOSCUserGuides/Virtual+Machines)\n" + ] + }, + { + "cell_type": "markdown", + "id": "00e621e9-5493-45aa-8cea-dcbb14ab0df6", + "metadata": {}, + "source": [ + "# Install the required libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "0ce0f97a-a87b-4655-8f85-cfabb07172f7", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: python-openstackclient in /opt/conda/lib/python3.12/site-packages (8.0.0)\n", + "Requirement already satisfied: python-keystoneclient in /opt/conda/lib/python3.12/site-packages (5.6.0)\n", + "Requirement already satisfied: ipywidgets in /opt/conda/lib/python3.12/site-packages (8.1.5)\n", + "Requirement already satisfied: paramiko in /opt/conda/lib/python3.12/site-packages (3.5.1)\n", + "Requirement already satisfied: pbr!=2.1.0,>=2.0.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (6.1.1)\n", + "Requirement already satisfied: cryptography>=2.7 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (44.0.0)\n", + "Requirement already satisfied: cliff>=3.5.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (4.9.1)\n", + "Requirement already satisfied: iso8601>=0.1.11 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (2.1.0)\n", + "Requirement already satisfied: openstacksdk>=3.3.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (4.5.0)\n", + "Requirement already satisfied: osc-lib>=2.3.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (4.0.0)\n", + "Requirement already satisfied: oslo.i18n>=3.15.3 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (6.5.1)\n", + "Requirement already satisfied: python-cinderclient>=3.3.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (9.7.0)\n", + "Requirement already satisfied: requests>=2.27.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (2.32.3)\n", + "Requirement already satisfied: stevedore>=2.0.1 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (5.4.1)\n", + "Requirement already satisfied: debtcollector>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (3.0.0)\n", + "Requirement already satisfied: keystoneauth1>=3.4.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (5.10.0)\n", + "Requirement already satisfied: oslo.config>=5.2.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (9.7.1)\n", + "Requirement already satisfied: oslo.serialization>=2.18.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (5.7.0)\n", + "Requirement already satisfied: oslo.utils>=3.33.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (8.2.0)\n", + "Requirement already satisfied: packaging>=20.4 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (24.2)\n", + "Requirement already satisfied: comm>=0.1.3 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (0.2.2)\n", + "Requirement already satisfied: ipython>=6.1.0 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (8.31.0)\n", + "Requirement already satisfied: traitlets>=4.3.1 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (5.14.3)\n", + "Requirement already satisfied: widgetsnbextension~=4.0.12 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (4.0.13)\n", + "Requirement already satisfied: jupyterlab_widgets~=3.0.12 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (3.0.13)\n", + "Requirement already satisfied: bcrypt>=3.2 in /opt/conda/lib/python3.12/site-packages (from paramiko) (4.3.0)\n", + "Requirement already satisfied: pynacl>=1.5 in /opt/conda/lib/python3.12/site-packages (from paramiko) (1.5.0)\n", + "Requirement already satisfied: autopage>=0.4.0 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (0.5.2)\n", + "Requirement already satisfied: cmd2>=1.0.0 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (2.5.11)\n", + "Requirement already satisfied: PrettyTable>=0.7.2 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (3.16.0)\n", + "Requirement already satisfied: PyYAML>=3.12 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (6.0.2)\n", + "Requirement already satisfied: cffi>=1.12 in /opt/conda/lib/python3.12/site-packages (from cryptography>=2.7->python-openstackclient) (1.17.1)\n", + "Requirement already satisfied: wrapt>=1.7.0 in /opt/conda/lib/python3.12/site-packages (from debtcollector>=1.2.0->python-keystoneclient) (1.17.2)\n", + "Requirement already satisfied: decorator in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", + "Requirement already satisfied: jedi>=0.16 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.2)\n", + "Requirement already satisfied: matplotlib-inline in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.7)\n", + "Requirement already satisfied: pexpect>4.3 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", + "Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.48)\n", + "Requirement already satisfied: pygments>=2.4.0 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (2.18.0)\n", + "Requirement already satisfied: stack_data in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", + "Requirement already satisfied: os-service-types>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from keystoneauth1>=3.4.0->python-keystoneclient) (1.7.0)\n", + "Requirement already satisfied: typing-extensions>=4.12 in /opt/conda/lib/python3.12/site-packages (from keystoneauth1>=3.4.0->python-keystoneclient) (4.12.2)\n", + "Requirement already satisfied: dogpile.cache>=0.6.5 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.3.4)\n", + "Requirement already satisfied: jmespath>=0.9.0 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.0.1)\n", + "Requirement already satisfied: jsonpatch!=1.20,>=1.16 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.33)\n", + "Requirement already satisfied: platformdirs>=3 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (4.3.6)\n", + "Requirement already satisfied: psutil>=3.2.2 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (5.9.8)\n", + "Requirement already satisfied: requestsexceptions>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.4.0)\n", + "Requirement already satisfied: netaddr>=0.7.18 in /opt/conda/lib/python3.12/site-packages (from oslo.config>=5.2.0->python-keystoneclient) (1.3.0)\n", + "Requirement already satisfied: rfc3986>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from oslo.config>=5.2.0->python-keystoneclient) (2.0.0)\n", + "Requirement already satisfied: msgpack>=0.5.2 in /opt/conda/lib/python3.12/site-packages (from oslo.serialization>=2.18.0->python-keystoneclient) (1.1.0)\n", + "Requirement already satisfied: tzdata>=2022.4 in /opt/conda/lib/python3.12/site-packages (from oslo.serialization>=2.18.0->python-keystoneclient) (2024.2)\n", + "Requirement already satisfied: pyparsing>=2.1.0 in /opt/conda/lib/python3.12/site-packages (from oslo.utils>=3.33.0->python-keystoneclient) (3.2.0)\n", + "Requirement already satisfied: setuptools in /opt/conda/lib/python3.12/site-packages (from pbr!=2.1.0,>=2.0.0->python-openstackclient) (75.6.0)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (3.4.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (3.10)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (2.3.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (2024.12.14)\n", + "Requirement already satisfied: pycparser in /opt/conda/lib/python3.12/site-packages (from cffi>=1.12->cryptography>=2.7->python-openstackclient) (2.22)\n", + "Requirement already satisfied: pyperclip>=1.8 in /opt/conda/lib/python3.12/site-packages (from cmd2>=1.0.0->cliff>=3.5.0->python-openstackclient) (1.9.0)\n", + "Requirement already satisfied: wcwidth>=0.2.10 in /opt/conda/lib/python3.12/site-packages (from cmd2>=1.0.0->cliff>=3.5.0->python-openstackclient) (0.2.13)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.4 in /opt/conda/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.4)\n", + "Requirement already satisfied: jsonpointer>=1.9 in /opt/conda/lib/python3.12/site-packages (from jsonpatch!=1.20,>=1.16->openstacksdk>=3.3.0->python-openstackclient) (3.0.0)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.12/site-packages (from pexpect>4.3->ipython>=6.1.0->ipywidgets) (0.7.0)\n", + "Requirement already satisfied: executing>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (2.1.0)\n", + "Requirement already satisfied: asttokens>=2.1.0 in /opt/conda/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (3.0.0)\n", + "Requirement already satisfied: pure_eval in /opt/conda/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (0.2.3)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install python-openstackclient python-keystoneclient ipywidgets paramiko" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c3718348-c7df-44d3-9811-66b7fa7ec7fb", + "metadata": {}, + "outputs": [], + "source": [ + "import sys\n", + "import paramiko\n", + "import yaml\n", + "from keystoneauth1.session import Session\n", + "from keystoneauth1.identity.v3.oidc import OidcAccessToken\n", + "from keystoneauth1.identity.v3.application_credential import ApplicationCredential\n", + "from keystoneclient.v3.client import Client\n", + "from openstack.connection import Connection\n", + "import ipywidgets as widgets\n", + "import base64\n", + "import time\n", + "from IPython.display import display, clear_output, Markdown\n", + "from openstack.exceptions import ResourceNotFound, SDKException" + ] + }, + { + "cell_type": "markdown", + "id": "02aedafa-9276-4350-b60c-53fe216514c9", + "metadata": {}, + "source": [ + "# ๐ Connect to OpenStack\n", + "## Set up OpenStack session with OIDC token authentication\n", + "\n", + "To authenticate with OpenStack using OIDC (OpenID Connect), you'll need to provide the following parameters:\n", + "\n", + "- **`auth_url`**: The URL of the OpenStack authentication server. \n", + "\n", + "- **`protocol`**: The protocol used for authentication, such as `openid`.\n", + "\n", + "- **`identity_provider`**: The name of the trusted external Identity Provider (IdP) that authenticates your identity.\n", + "\n", + "- **`access_token`**: The token you receive from the IdP after successfully logging in. \n", + " This token proves your identity to OpenStack.\n", + "\n", + "> โ๏ธ These parameters are used to initialize an authenticated session with OpenStack through the `openstack.connect()` function.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5bc6fac0-c5fa-44a7-9d29-38ea5164e4bc", + "metadata": {}, + "outputs": [], + "source": [ + "def load_access_token(token_file_path=\"/var/run/secrets/oidc/access_token\"):\n", + " \"\"\"Reads access token from specified file\"\"\"\n", + " try:\n", + " return open(token_file_path, \"r\").read()\n", + " except IOError:\n", + " print(\"Reading from access token file failed.\", file=sys.stderr)\n", + "\n", + "cloud_creds = OidcAccessToken(auth_url=\"https://api.cloud.psnc.pl:5000/v3/\",\n", + " identity_provider=\"aai.open-science-cloud.ec.europa.eu\",\n", + " protocol=\"openid\",\n", + " access_token=load_access_token()\n", + " )\n", + "\n", + "cloud_session = Session(auth=cloud_creds)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c27a6b45-cd62-446c-bccf-9cba425e54ab", + "metadata": {}, + "source": [ + "## OpenStack Keystone Client\n", + "\n", + "The Keystone client is used to interact with OpenStack's identity service and enables to:\n", + "\n", + "- Access OpenStack components not exposed in the primary API.\n", + "- Retrieve detailed information about your projects" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b871dc55-172a-43da-81d7-b7fa796a7c2c", + "metadata": {}, + "outputs": [], + "source": [ + "# Get list of accessible projects\n", + "keystone_client = Client(session=cloud_session)\n", + "my_projects = keystone_client.auth.projects()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9a58d8c5-7dcd-4549-9b10-0456ccd66b30", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "## Scope to one of your projects you are entitled to access" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "90ef16930f794a71812097ee87883176", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Dropdown(description='Project:', layout=Layout(width='50%'), options=(('pp-0192f702-2833-4ab5-8c44-79f92eb323dโฆ" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "43118c111a1740f7898f72861426f2ca", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Button(button_style='success', description='Connect to project', style=ButtonStyle())" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1cd77110d36042578de07d7469959646", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "clear_output(wait=True) # Clear previous output first\n", + "display(Markdown(\"## Scope to one of your projects you are entitled to access\"))\n", + "\n", + "project_dropdown = widgets.Dropdown(\n", + " options=[(project.name, idx) for idx, project in enumerate(my_projects)],\n", + " description=\"Project:\",\n", + " layout=widgets.Layout(width='50%')\n", + ")\n", + "connect_button = widgets.Button(description=\"Connect to project\", button_style=\"success\")\n", + "output = widgets.Output()\n", + "\n", + "def on_connect_clicked(b):\n", + " with output:\n", + " clear_output()\n", + " idx = project_dropdown.value\n", + " selected_project = my_projects[idx]\n", + " print(f\"๐ Connecting to project: {selected_project.name} (ID: {selected_project.id}, Domain: {selected_project.domain_id})\")\n", + " scoped_cloud_creds = OidcAccessToken(\n", + " auth_url=\"https://api.cloud.psnc.pl:5000/v3/\",\n", + " identity_provider=\"aai.open-science-cloud.ec.europa.eu\",\n", + " protocol=\"openid\",\n", + " project_id=selected_project.id,\n", + " project_domain_id=selected_project.domain_id,\n", + " access_token=load_access_token()\n", + " )\n", + " global scoped_cloud_session, scoped_openstack_connection\n", + " scoped_cloud_session = Session(auth=scoped_cloud_creds)\n", + " scoped_openstack_connection = Connection(session=scoped_cloud_session)\n", + " print(\"โ Connection established successfully!\")\n", + "\n", + "connect_button._click_handlers.callbacks.clear()\n", + "connect_button.on_click(on_connect_clicked)\n", + "display(project_dropdown, connect_button, output)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7c50e961-b797-4e1c-a91b-e44487324c0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Your current project id: db6b4eb2d6fe454191e8d39b088564cd\n" + ] + } + ], + "source": [ + "print(\"Your current project id: \", scoped_openstack_connection.current_project_id) " + ] + }, + { + "cell_type": "markdown", + "id": "5a8c4205-e524-44ca-96fb-d7577bc74d90", + "metadata": {}, + "source": [ + "# Starting up your own VM\n", + "## ๐๏ธ Create an SSH Key Pair for VM Access\n", + "\n", + "- If you already have a key, skip this step and provide the key name in the `create_server()` method.\n", + "- You can:\n", + " - Upload your **own** public key using `public_key=\"ssh-rsa ...\"` \n", + " - Or let **OpenStack generate one** for you (as weโll do below).\n", + "- Remember to save the private key securely! \n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5e4b3a58-687b-471f-8c7f-a6db86bde820", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Private key saved to key.pem\n", + "Public key saved to key.pub\n" + ] + } + ], + "source": [ + "key_name = \"key\"\n", + "new_keypair = scoped_openstack_connection.create_keypair(key_name)\n", + "#Generating key-pair using existing public key\n", + "#scoped_openstack_connection.create_keypair(\"mykey2\", public_key=\"ssh-rsa ....\")\n", + "\n", + "#If you let OpenStack generate your key-pair you will need to save your\n", + "#private and public keys for later use\n", + "with open(f\"{key_name}.pem\", \"w\") as priv_file:\n", + " priv_file.write(new_keypair.private_key)\n", + " print(f\"Private key saved to {key_name}.pem\")\n", + "\n", + "with open(f\"{key_name}.pub\", \"w\") as pub_file:\n", + " pub_file.write(new_keypair.public_key)\n", + " print(f\"Public key saved to {key_name}.pub\")" + ] + }, + { + "cell_type": "markdown", + "id": "809ce42b-b70f-4dfb-82a9-cb505477663c", + "metadata": {}, + "source": [ + "## Create a Security Group for Your VM\n", + "\n", + "Before creating a virtual machine, it's important to define what kind of network traffic it should allow. \n", + "This is done using **Security Groups** in OpenStack.\n", + "\n", + "In this example, we:\n", + "\n", + "- Create a new security group\n", + "- Allow incoming **SSH** (port 22) traffic to enable remote access\n", + "- Allow incoming **ICMP** traffic so the VM can be pinged\n", + "- Allow incoming **HTTP** (port 80) traffic for hosting web services\n", + "\n", + "_Note: OpenStack automatically allows all outgoing traffic (egress) from your VM._\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "aceddf23-baeb-4e86-8100-52beec7241a4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "โ Security group 'My VM Security Group' created and configured.\n" + ] + } + ], + "source": [ + "# Create a new security group\n", + "new_security_group = scoped_openstack_connection.create_security_group(\n", + " name=\"My VM Security Group\",\n", + " description=\"Allows SSH, HTTP and ICMP traffic\"\n", + ")\n", + "\n", + "# Allow incoming SSH (port 22)\n", + "scoped_openstack_connection.create_security_group_rule(\n", + " new_security_group.id,\n", + " port_range_min=22,\n", + " port_range_max=22,\n", + " protocol=\"tcp\",\n", + " direction=\"ingress\",\n", + " description=\"Allow SSH\"\n", + ")\n", + "# Allow incoming HTTP (port 80)\n", + "scoped_openstack_connection.network.create_security_group_rule(\n", + " security_group_id=new_security_group.id,\n", + " port_range_min=80,\n", + " port_range_max=80,\n", + " protocol=\"tcp\",\n", + " direction=\"ingress\",\n", + " description=\"Allow HTTP\"\n", + ")\n", + "# Allow incoming ICMP (ping)\n", + "scoped_openstack_connection.create_security_group_rule(\n", + " new_security_group.id,\n", + " protocol=\"icmp\",\n", + " direction=\"ingress\",\n", + " description=\"Allow ICMP\"\n", + ")\n", + "\n", + "print(f\"โ Security group '{new_security_group.name}' created and configured.\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "94a9ee51-c6d7-4c35-b969-5097bb777f1c", + "metadata": {}, + "source": [ + "## ๐ Select Resources for Your VM\n", + "\n", + "Before launching a VM, you need to choose the following:\n", + "\n", + "- **Image (OS)**: The base operating system your VM will use.\n", + "- **Flavor (CPU/RAM/Disk)**: Determines how much compute power (vCPUs), memory (RAM), and disk your VM will have. \n", + " ๐ [Flavor details at PSNC](https://docs.cloud.psnc.pl/en/general/regions/bst-pl2-region/)\n", + "\n", + "- **Network**: The virtual public network the VM will connect to, including internal/external IP options. \n", + " ๐ [PSNC Network Design Overview](https://docs.psnc.pl/display/EOSCUserGuides/PSNC+Network+Design)\n", + "\n", + "> ๐ ๏ธ Once selected, these options will be used to launch your VM using the OpenStack backend.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "5e29662e-1576-48f8-9ae2-f9e2be0ffc60", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "### Available Images" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "341b08877fcc44f7a71e223b2713cdf0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Dropdown(description='Image:', layout=Layout(width='85%'), options=('Windows 10 Pro 22H2 (2023-05-31) (ID: c91โฆ" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Available Flavors" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a8ba85e215494b91a0b93a6e01128471", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Dropdown(description='Flavor:', layout=Layout(width='85%'), options=('C1-NET-16vCPU-32R (ID: c1-net-16-32)', 'โฆ" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "### Available Networks" + ], + "text/plain": [ + "<IPython.core.display.Markdown object>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3eefc30da3834df793223ad458b594a0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Dropdown(description='Network:', layout=Layout(width='85%'), options=('PSNC-STORAGE-MANILA (ID: 25cb17dc-9645-โฆ" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def format_size_gb(size_bytes):\n", + " return f\"{size_bytes / (1024 ** 3):.2f} GB\"\n", + "\n", + "def format_image_options(images):\n", + " return [\n", + " f\"{image.name} (ID: {image.id}, Size: {format_size_gb(image.size)})\"\n", + " for image in images\n", + " ]\n", + "\n", + "def format_generic_options(resources, label_attr='name', id_attr='id'):\n", + " return [f\"{getattr(res, label_attr)} (ID: {getattr(res, id_attr)})\" for res in resources]\n", + " \n", + "images = list(scoped_openstack_connection.compute.images())\n", + "flavors = list(scoped_openstack_connection.compute.flavors())\n", + "networks = list(scoped_openstack_connection.network.networks())\n", + "\n", + "display(Markdown(\"### Available Images\"))\n", + "image_dropdown = widgets.Dropdown(\n", + " options=format_image_options(images),\n", + " description='Image:',\n", + " layout=widgets.Layout(width='85%')\n", + ")\n", + "display(image_dropdown)\n", + "\n", + "display(Markdown(\"### Available Flavors\"))\n", + "flavor_dropdown = widgets.Dropdown(\n", + " options=format_generic_options(flavors),\n", + " description='Flavor:',\n", + " layout=widgets.Layout(width='85%')\n", + ")\n", + "display(flavor_dropdown)\n", + "\n", + "display(Markdown(\"### Available Networks\"))\n", + "network_dropdown = widgets.Dropdown(\n", + " options=format_generic_options(networks),\n", + " description='Network:',\n", + " layout=widgets.Layout(width='85%')\n", + ")\n", + "display(network_dropdown)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "c10e65f1-1e6e-44f4-8e86-aa6e5452d10c", + "metadata": {}, + "outputs": [], + "source": [ + "def get_selected_name(dropdown_value):\n", + " return dropdown_value.split(\" (ID: \")[0]\n", + "def get_selected_id(dropdown_value):\n", + " return dropdown_value.split(\" (ID: \")[1].split(\")\")[0]\n", + "selected_image = get_selected_name(image_dropdown.value)\n", + "selected_flavor = get_selected_name(flavor_dropdown.value)\n", + "selected_network = get_selected_name(network_dropdown.value)\n", + "selected_network_id = get_selected_id(network_dropdown.value)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "616210a6-a2f4-4732-bdbe-b37684d9dd74", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Selected configuration: PSNC-EXT-PUB1-EDU, M1-NVME-2vCPU-8R-50D and ubuntu-24.04-x86_64-server-cloudimg-20241105\n" + ] + } + ], + "source": [ + "print(f\"Selected configuration: {selected_network}, {selected_flavor} and {selected_image}\")" + ] + }, + { + "cell_type": "markdown", + "id": "92b4ca77-ecc9-44f0-8464-5548b604e518", + "metadata": {}, + "source": [ + "## ๐ Set Up a Private Network Environment\n", + "You will also need to set up a **private network**, a **subnet**, and a **router** to manage traffic between your VMs and external networks. This process ensures that your VMs have both internal and external connectivity as required. \n", + "> Follow the steps below to configure your network:\n" + ] + }, + { + "cell_type": "markdown", + "id": "e91b0bbe-8561-4bbd-87f7-927e53c35f68", + "metadata": {}, + "source": [ + "<img src=\"figures/scheme.png\" alt=\"Network scheme\" width=\"400\" height=\"200\"/>\n" + ] + }, + { + "cell_type": "markdown", + "id": "c3b75537-fb1b-448d-ad03-d637abb68b11", + "metadata": {}, + "source": [ + "### Create Private Network" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "f9a37e64-ba85-43b3-b234-9ac09e743951", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating private network...\n", + "Created network: My private network (ID: fca7d4d2-4c2c-4a25-9ed8-9d65c9d0d52f)\n" + ] + } + ], + "source": [ + "try:\n", + " print(\"Creating private network...\")\n", + " network = scoped_openstack_connection.network.create_network(\n", + " name=\"My private network\",\n", + " admin_state_up=True,\n", + " port_security_enabled=True\n", + " )\n", + " print(f\"Created network: {network.name} (ID: {network.id})\")\n", + "except SDKException as e:\n", + " print(f\"Network creation failed: {e}\")\n", + " raise" + ] + }, + { + "cell_type": "markdown", + "id": "cb79e628-f76c-442c-b7f0-72e4d74a98ac", + "metadata": {}, + "source": [ + "### Create Internal Network (subnet)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "6a36a9da-14fc-41be-92a7-6e4b140c1d47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating subnet...\n", + "Created subnet: My internal network (ID: 7558ff73-1885-4707-aa2e-bf9dbdd0fa19)\n" + ] + } + ], + "source": [ + "try:\n", + " print(\"Creating subnet...\")\n", + " subnet = scoped_openstack_connection.network.create_subnet(\n", + " network_id=network.id,\n", + " name=\"My internal network\",\n", + " ip_version=4,\n", + " cidr=\"192.168.1.0/24\",\n", + " )\n", + " print(f\"Created subnet: {subnet.name} (ID: {subnet.id})\")\n", + "except SDKException as e:\n", + " print(f\"Subnet creation failed: {e}\")\n", + " raise\n" + ] + }, + { + "cell_type": "markdown", + "id": "b6c347fc-c1a2-433e-9b71-4e20f93b9ac9", + "metadata": {}, + "source": [ + "### Create Router and connect with network" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1720eb87-7fb2-420b-bac4-2b9d8f5c0d31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating router with external network: PSNC-EXT-PUB1-EDU\n", + "Created router: My router (ID: 57abc611-b306-458e-bb17-cbdc49cdf9fb)\n", + "Connected subnet My internal network to router My router\n" + ] + } + ], + "source": [ + "try:\n", + " print(f\"Creating router with external network: {selected_network}\")\n", + " router = scoped_openstack_connection.network.create_router(\n", + " name=\"My router\",\n", + " external_gateway_info={\"network_id\": selected_network_id}\n", + " )\n", + " print(f\"Created router: {router.name} (ID: {router.id})\")\n", + "\n", + " # Connect private subnet to router\n", + " scoped_openstack_connection.network.add_interface_to_router(\n", + " router.id,\n", + " subnet_id=subnet.id\n", + " )\n", + " print(f\"Connected subnet {subnet.name} to router {router.name}\")\n", + "except SDKException as e:\n", + " print(f\"Router setup failed: {e}\")\n", + " raise" + ] + }, + { + "cell_type": "markdown", + "id": "3d1ab4c3-f811-459a-917b-4664f01253f7", + "metadata": {}, + "source": [ + "\n", + "> **Diagram**: OpenStack networking setup โ private network connected with the external public network (e.g., `PSNC-EXT-PUB1-EDU`) by router.\n" + ] + }, + { + "cell_type": "markdown", + "id": "7483a3d0-7894-46f6-b202-128ff92b7276", + "metadata": {}, + "source": [ + "## ๐ Launch VM" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "4cd699a0-ddd6-4356-b828-95673e15e405", + "metadata": {}, + "outputs": [], + "source": [ + "# VM parameters\n", + "new_volume = scoped_openstack_connection.create_volume(10)\n", + "vm_name = \"new_vm\"\n", + "server = scoped_openstack_connection.create_server(\n", + " name=vm_name,\n", + " image=selected_image,\n", + " flavor=selected_flavor,\n", + " network=network, # Use new private network\n", + " key_name=\"key\",\n", + " volumes=[new_volume],\n", + " security_groups=[new_security_group.name]\n", + ")\n", + "# Waiting until all is ready\n", + "time.sleep(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "47ac6e4e-ee8d-413b-a7bf-a7f1562d01e7", + "metadata": {}, + "outputs": [], + "source": [ + "# Refreshing VM object to get the current state\n", + "new_vm = scoped_openstack_connection.compute.find_server(server.id)" + ] + }, + { + "cell_type": "markdown", + "id": "eeae3963-20cf-4283-a40c-c6ab54ebea7d", + "metadata": {}, + "source": [ + "### Configure floating IP associated with the VM for an external access" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b61224ce-446d-42f7-b3d6-12e204ef26b5", + "metadata": {}, + "outputs": [], + "source": [ + "new_fip = scoped_openstack_connection.create_floating_ip(network=selected_network)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "d547d657-15d5-4c9f-86f8-2ffd6f2f3466", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Floating IP: 62.3.174.55\n" + ] + } + ], + "source": [ + "floating_ip_address = new_fip.floating_ip_address\n", + "print(f\"Floating IP: {floating_ip_address}\")" + ] + }, + { + "cell_type": "markdown", + "id": "99447853-3a5e-445d-a690-8e034ef6156a", + "metadata": {}, + "source": [ + "> Next step is to add new FIP to new VM to get access through SSH." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "8b06239e-fae7-464e-a887-5ce9c36b124c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "openstack.compute.v2.server.Server(id=63542c19-0751-4b99-a42d-3d5cc22bb1a6, name=new_vm, status=BUILD, tenant_id=db6b4eb2d6fe454191e8d39b088564cd, user_id=0814e963545daece81ed1e1bda7b90ca33b58889e97e843aeb29ac634d15ae84, metadata={}, hostId=d54760d94ecc699c04cb77d71fa37050d12057e3460d7661477b5bf8, image={'id': '7816da3d-cc63-4f01-bc2a-832bf2391eb8', 'links': [{'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8774/images/7816da3d-cc63-4f01-bc2a-832bf2391eb8'}]}, flavor={'vcpus': 2, 'ram': 8192, 'disk': 50, 'ephemeral': 0, 'swap': 0, 'original_name': 'M1-NVME-2vCPU-8R-50D', 'extra_specs': {'aggregate_instance_extra_specs:nvme': 'general-purpose', 'quota:disk_read_bytes_sec': '524288000', 'quota:disk_read_iops_sec': '50000', 'quota:disk_write_bytes_sec': '524288000', 'quota:disk_write_iops_sec': '10000'}}, created=2025-04-14T08:26:48Z, updated=2025-04-14T08:26:52Z, addresses={}, accessIPv4=, accessIPv6=, links=[{'rel': 'self', 'href': 'https://claudius.cloud.psnc.pl:8774/v2.1/servers/63542c19-0751-4b99-a42d-3d5cc22bb1a6'}, {'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8774/servers/63542c19-0751-4b99-a42d-3d5cc22bb1a6'}], OS-DCF:diskConfig=MANUAL, progress=0, OS-EXT-AZ:availability_zone=BST0K10, pinned_availability_zone=BST0K10, config_drive=, key_name=key, OS-SRV-USG:launched_at=None, OS-SRV-USG:terminated_at=None, security_groups=[{'name': 'My VM Security Group'}], OS-EXT-STS:task_state=spawning, OS-EXT-STS:vm_state=building, OS-EXT-STS:power_state=0, os-extended-volumes:volumes_attached=[{'id': '6395a1f4-644e-4a6a-9d98-7892dba997b0', 'delete_on_termination': False}], locked=False, locked_reason=None, description=None, tags=[], trusted_image_certificates=None, OS-EXT-SRV-ATTR:hostname=new-vm, server_groups=[], location=Munch({'cloud': 'api.cloud.psnc.pl', 'region_name': None, 'zone': 'BST0K10', 'project': Munch({'id': 'db6b4eb2d6fe454191e8d39b088564cd', 'name': None, 'domain_id': None, 'domain_name': None})}))" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# add_ip_list requires actual address string\n", + "# or list of strings of address\n", + "scoped_openstack_connection.add_ip_list(new_vm, new_fip.floating_ip_address)" + ] + }, + { + "cell_type": "markdown", + "id": "9ac6fe06-da82-493b-a0ba-e6a4fd898a18", + "metadata": {}, + "source": [ + "\n", + "> **Diagram**: After successful launching of VM, our network topology is extended with new created instance\n" + ] + }, + { + "cell_type": "markdown", + "id": "ffd09a73-4a84-440e-8e8c-117b6b4163fc", + "metadata": {}, + "source": [ + "### ๐ Connect to Your VM via SSH and configure web page\n", + "- Run a **cloud-init-like** script to:\n", + " - Update system packages\n", + " - Install **NGINX**\n", + " - Set up a simple homepage" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "43fbe01e-163a-44b1-ba1d-e7589562a918", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Connecting to VM at 62.3.174.55...\n", + "Try accessing: http://62.3.174.55\n", + "Access VM via ssh: ssh -i mykey.pem ubuntu@62.3.174.55\n" + ] + } + ], + "source": [ + "print(f\"Connecting to VM at {floating_ip_address}...\")\n", + "ssh = paramiko.SSHClient()\n", + "ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())\n", + "try:\n", + " ssh.connect(\n", + " hostname=floating_ip_address,\n", + " username=\"ubuntu\",\n", + " key_filename=\"key.pem\" # \"/path/to/mykey.pem\"\n", + " )\n", + " cloud_init_script = \"\"\"\n", + " sudo apt-get update\n", + " sudo apt-get upgrade -y\n", + " sudo apt-get install -y nginx\n", + " sudo bash -c \"echo 'Hello from my VM' > /var/www/html/index.html\"\n", + " \"\"\"\n", + " ssh.exec_command(cloud_init_script)\n", + " ssh.close()\n", + "except Exception as e:\n", + " print(f\"SSH failed: {e}\")\n", + " raise\n", + "\n", + "print(f\"Try accessing: http://{floating_ip_address}\")\n", + "print(f\"Access VM via ssh: ssh -i mykey.pem ubuntu@{floating_ip_address}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2e5e5e46-791d-406a-9f6f-be3d0c234b0d", + "metadata": {}, + "source": [ + "> It will take some time for script to finish, so the provided link will not be accessible instantly" + ] + }, + { + "cell_type": "markdown", + "id": "dd588470-3fc1-4b41-9bba-c929743fa9c9", + "metadata": {}, + "source": [ + "# Finish session" + ] + }, + { + "cell_type": "markdown", + "id": "89a921c0-8591-447a-b08a-ade26b7256ab", + "metadata": {}, + "source": [ + "## Detach floating IP from current server" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "3cf9a669-0dba-42aa-be26-e9f804c35e48", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scoped_openstack_connection.detach_ip_from_server(new_vm, new_fip.id)" + ] + }, + { + "cell_type": "markdown", + "id": "29e3db6c-5b15-4b32-ad7b-8356436733e7", + "metadata": {}, + "source": [ + "## Backup your attached volume" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "95feded0-22be-464c-876e-39f1015a773e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "openstack.block_storage.v3.backup.Backup(name=My Backup, volume_id=6395a1f4-644e-4a6a-9d98-7892dba997b0, description=None, force=True, is_incremental=False, snapshot_id=None, id=65fa853d-9dfd-4b67-85e8-c4e333a3107c, links=[{'rel': 'self', 'href': 'https://claudius.cloud.psnc.pl:8776/v3/db6b4eb2d6fe454191e8d39b088564cd/backups/65fa853d-9dfd-4b67-85e8-c4e333a3107c'}, {'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8776/db6b4eb2d6fe454191e8d39b088564cd/backups/65fa853d-9dfd-4b67-85e8-c4e333a3107c'}], status=available, size=10, object_count=205, availability_zone=BST, container=cinder-backup-s3-claudius, created_at=2025-04-14T08:45:35.000000, updated_at=2025-04-14T08:47:24.000000, fail_reason=None, has_dependent_backups=False, data_timestamp=2025-04-14T08:45:35.000000, metadata={}, location=Munch({'cloud': 'api.cloud.psnc.pl', 'region_name': None, 'zone': 'BST', 'project': Munch({'id': 'db6b4eb2d6fe454191e8d39b088564cd', 'name': None, 'domain_id': None, 'domain_name': None})}))" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attached_volume = new_vm.attached_volumes[0]\n", + "# OpenStack recommends to suspend VM and then backup volume.\n", + "# You can use `force` parameter to bypass it.\n", + "scoped_openstack_connection.create_volume_backup(attached_volume.id, name=\"My Backup\", force=True)" + ] + }, + { + "cell_type": "markdown", + "id": "878db2a7-dbd3-41c8-b629-6ca2954381c6", + "metadata": {}, + "source": [ + "## Release allocated resources" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "301cbef1-ec92-439f-8f2d-fca92e2c33a9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scoped_openstack_connection.delete_server(new_vm.id)\n", + "scoped_openstack_connection.delete_floating_ip(new_fip)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "dc283305-7e0e-4967-84e9-d1573b45136e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# If you do not wish to use generated key-pair anymore\n", + "# you can simply delete it\n", + "scoped_openstack_connection.delete_keypair(\"mykey\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} -- GitLab From e9153bac6a407933e13b0c2747488c06c2da5747 Mon Sep 17 00:00:00 2001 From: Karen Pailozian <pailozian@cesnet.cz> Date: Tue, 20 May 2025 11:18:17 +0200 Subject: [PATCH 2/3] fix: pass cloud init script as userdata when launching VM --- openstack_eosc.ipynb | 318 ++++++++++++++++++++++++++++--------------- 1 file changed, 209 insertions(+), 109 deletions(-) diff --git a/openstack_eosc.ipynb b/openstack_eosc.ipynb index 41e2050..155108a 100644 --- a/openstack_eosc.ipynb +++ b/openstack_eosc.ipynb @@ -34,66 +34,94 @@ "name": "stdout", "output_type": "stream", "text": [ - "Requirement already satisfied: python-openstackclient in /opt/conda/lib/python3.12/site-packages (8.0.0)\n", - "Requirement already satisfied: python-keystoneclient in /opt/conda/lib/python3.12/site-packages (5.6.0)\n", - "Requirement already satisfied: ipywidgets in /opt/conda/lib/python3.12/site-packages (8.1.5)\n", - "Requirement already satisfied: paramiko in /opt/conda/lib/python3.12/site-packages (3.5.1)\n", - "Requirement already satisfied: pbr!=2.1.0,>=2.0.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (6.1.1)\n", - "Requirement already satisfied: cryptography>=2.7 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (44.0.0)\n", - "Requirement already satisfied: cliff>=3.5.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (4.9.1)\n", - "Requirement already satisfied: iso8601>=0.1.11 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (2.1.0)\n", - "Requirement already satisfied: openstacksdk>=3.3.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (4.5.0)\n", - "Requirement already satisfied: osc-lib>=2.3.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (4.0.0)\n", - "Requirement already satisfied: oslo.i18n>=3.15.3 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (6.5.1)\n", - "Requirement already satisfied: python-cinderclient>=3.3.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (9.7.0)\n", + "Collecting python-openstackclient\n", + " Using cached python_openstackclient-8.0.0-py3-none-any.whl.metadata (6.4 kB)\n", + "Collecting python-keystoneclient\n", + " Using cached python_keystoneclient-5.6.0-py3-none-any.whl.metadata (3.7 kB)\n", + "Requirement already satisfied: ipywidgets in /opt/conda/lib/python3.12/site-packages (8.1.6)\n", + "Collecting paramiko\n", + " Using cached paramiko-3.5.1-py3-none-any.whl.metadata (4.6 kB)\n", + "Collecting pbr!=2.1.0,>=2.0.0 (from python-openstackclient)\n", + " Using cached pbr-6.1.1-py2.py3-none-any.whl.metadata (3.4 kB)\n", + "Requirement already satisfied: cryptography>=2.7 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (44.0.2)\n", + "Collecting cliff>=3.5.0 (from python-openstackclient)\n", + " Using cached cliff-4.10.0-py3-none-any.whl.metadata (1.9 kB)\n", + "Collecting iso8601>=0.1.11 (from python-openstackclient)\n", + " Using cached iso8601-2.1.0-py3-none-any.whl.metadata (3.7 kB)\n", + "Collecting openstacksdk>=3.3.0 (from python-openstackclient)\n", + " Using cached openstacksdk-4.5.0-py3-none-any.whl.metadata (12 kB)\n", + "Collecting osc-lib>=2.3.0 (from python-openstackclient)\n", + " Using cached osc_lib-4.0.0-py3-none-any.whl.metadata (3.6 kB)\n", + "Collecting oslo.i18n>=3.15.3 (from python-openstackclient)\n", + " Using cached oslo.i18n-6.5.1-py3-none-any.whl.metadata (2.1 kB)\n", + "Collecting python-cinderclient>=3.3.0 (from python-openstackclient)\n", + " Using cached python_cinderclient-9.7.0-py3-none-any.whl.metadata (19 kB)\n", "Requirement already satisfied: requests>=2.27.0 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (2.32.3)\n", - "Requirement already satisfied: stevedore>=2.0.1 in /opt/conda/lib/python3.12/site-packages (from python-openstackclient) (5.4.1)\n", - "Requirement already satisfied: debtcollector>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (3.0.0)\n", - "Requirement already satisfied: keystoneauth1>=3.4.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (5.10.0)\n", - "Requirement already satisfied: oslo.config>=5.2.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (9.7.1)\n", - "Requirement already satisfied: oslo.serialization>=2.18.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (5.7.0)\n", - "Requirement already satisfied: oslo.utils>=3.33.0 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (8.2.0)\n", + "Collecting stevedore>=2.0.1 (from python-openstackclient)\n", + " Using cached stevedore-5.4.1-py3-none-any.whl.metadata (2.3 kB)\n", + "Collecting debtcollector>=1.2.0 (from python-keystoneclient)\n", + " Using cached debtcollector-3.0.0-py3-none-any.whl.metadata (2.3 kB)\n", + "Collecting keystoneauth1>=3.4.0 (from python-keystoneclient)\n", + " Using cached keystoneauth1-5.11.0-py3-none-any.whl.metadata (4.0 kB)\n", + "Collecting oslo.config>=5.2.0 (from python-keystoneclient)\n", + " Using cached oslo_config-9.8.0-py3-none-any.whl.metadata (2.8 kB)\n", + "Collecting oslo.serialization>=2.18.0 (from python-keystoneclient)\n", + " Using cached oslo.serialization-5.7.0-py3-none-any.whl.metadata (2.1 kB)\n", + "Collecting oslo.utils>=3.33.0 (from python-keystoneclient)\n", + " Using cached oslo_utils-9.0.0-py3-none-any.whl.metadata (2.2 kB)\n", "Requirement already satisfied: packaging>=20.4 in /opt/conda/lib/python3.12/site-packages (from python-keystoneclient) (24.2)\n", "Requirement already satisfied: comm>=0.1.3 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (0.2.2)\n", - "Requirement already satisfied: ipython>=6.1.0 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (8.31.0)\n", + "Requirement already satisfied: ipython>=6.1.0 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (9.1.0)\n", "Requirement already satisfied: traitlets>=4.3.1 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (5.14.3)\n", - "Requirement already satisfied: widgetsnbextension~=4.0.12 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (4.0.13)\n", - "Requirement already satisfied: jupyterlab_widgets~=3.0.12 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (3.0.13)\n", - "Requirement already satisfied: bcrypt>=3.2 in /opt/conda/lib/python3.12/site-packages (from paramiko) (4.3.0)\n", - "Requirement already satisfied: pynacl>=1.5 in /opt/conda/lib/python3.12/site-packages (from paramiko) (1.5.0)\n", - "Requirement already satisfied: autopage>=0.4.0 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (0.5.2)\n", - "Requirement already satisfied: cmd2>=1.0.0 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (2.5.11)\n", - "Requirement already satisfied: PrettyTable>=0.7.2 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (3.16.0)\n", + "Requirement already satisfied: widgetsnbextension~=4.0.14 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (4.0.14)\n", + "Requirement already satisfied: jupyterlab_widgets~=3.0.14 in /opt/conda/lib/python3.12/site-packages (from ipywidgets) (3.0.14)\n", + "Collecting bcrypt>=3.2 (from paramiko)\n", + " Using cached bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (10 kB)\n", + "Collecting pynacl>=1.5 (from paramiko)\n", + " Using cached PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl.metadata (8.6 kB)\n", + "Collecting autopage>=0.4.0 (from cliff>=3.5.0->python-openstackclient)\n", + " Using cached autopage-0.5.2-py3-none-any.whl.metadata (7.9 kB)\n", + "Collecting cmd2>=1.0.0 (from cliff>=3.5.0->python-openstackclient)\n", + " Using cached cmd2-2.5.11-py3-none-any.whl.metadata (17 kB)\n", + "Collecting PrettyTable>=0.7.2 (from cliff>=3.5.0->python-openstackclient)\n", + " Using cached prettytable-3.16.0-py3-none-any.whl.metadata (33 kB)\n", "Requirement already satisfied: PyYAML>=3.12 in /opt/conda/lib/python3.12/site-packages (from cliff>=3.5.0->python-openstackclient) (6.0.2)\n", "Requirement already satisfied: cffi>=1.12 in /opt/conda/lib/python3.12/site-packages (from cryptography>=2.7->python-openstackclient) (1.17.1)\n", "Requirement already satisfied: wrapt>=1.7.0 in /opt/conda/lib/python3.12/site-packages (from debtcollector>=1.2.0->python-keystoneclient) (1.17.2)\n", - "Requirement already satisfied: decorator in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (5.1.1)\n", + "Requirement already satisfied: decorator in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (5.2.1)\n", + "Requirement already satisfied: ipython-pygments-lexers in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (1.1.1)\n", "Requirement already satisfied: jedi>=0.16 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (0.19.2)\n", "Requirement already satisfied: matplotlib-inline in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (0.1.7)\n", "Requirement already satisfied: pexpect>4.3 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (4.9.0)\n", - "Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.48)\n", - "Requirement already satisfied: pygments>=2.4.0 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (2.18.0)\n", + "Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (3.0.50)\n", + "Requirement already satisfied: pygments>=2.4.0 in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (2.19.1)\n", "Requirement already satisfied: stack_data in /opt/conda/lib/python3.12/site-packages (from ipython>=6.1.0->ipywidgets) (0.6.3)\n", - "Requirement already satisfied: os-service-types>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from keystoneauth1>=3.4.0->python-keystoneclient) (1.7.0)\n", - "Requirement already satisfied: typing-extensions>=4.12 in /opt/conda/lib/python3.12/site-packages (from keystoneauth1>=3.4.0->python-keystoneclient) (4.12.2)\n", - "Requirement already satisfied: dogpile.cache>=0.6.5 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.3.4)\n", + "Collecting os-service-types>=1.2.0 (from keystoneauth1>=3.4.0->python-keystoneclient)\n", + " Using cached os_service_types-1.7.0-py2.py3-none-any.whl.metadata (1.7 kB)\n", + "Requirement already satisfied: typing-extensions>=4.12 in /opt/conda/lib/python3.12/site-packages (from keystoneauth1>=3.4.0->python-keystoneclient) (4.13.2)\n", + "Collecting dogpile.cache>=0.6.5 (from openstacksdk>=3.3.0->python-openstackclient)\n", + " Using cached dogpile_cache-1.4.0-py3-none-any.whl.metadata (5.5 kB)\n", "Requirement already satisfied: jmespath>=0.9.0 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.0.1)\n", "Requirement already satisfied: jsonpatch!=1.20,>=1.16 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.33)\n", - "Requirement already satisfied: platformdirs>=3 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (4.3.6)\n", + "Requirement already satisfied: platformdirs>=3 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (4.3.7)\n", "Requirement already satisfied: psutil>=3.2.2 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (5.9.8)\n", - "Requirement already satisfied: requestsexceptions>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from openstacksdk>=3.3.0->python-openstackclient) (1.4.0)\n", - "Requirement already satisfied: netaddr>=0.7.18 in /opt/conda/lib/python3.12/site-packages (from oslo.config>=5.2.0->python-keystoneclient) (1.3.0)\n", - "Requirement already satisfied: rfc3986>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from oslo.config>=5.2.0->python-keystoneclient) (2.0.0)\n", + "Collecting requestsexceptions>=1.2.0 (from openstacksdk>=3.3.0->python-openstackclient)\n", + " Using cached requestsexceptions-1.4.0-py2.py3-none-any.whl.metadata (1.2 kB)\n", + "Collecting netaddr>=0.7.18 (from oslo.config>=5.2.0->python-keystoneclient)\n", + " Using cached netaddr-1.3.0-py3-none-any.whl.metadata (5.0 kB)\n", + "Collecting rfc3986>=1.2.0 (from oslo.config>=5.2.0->python-keystoneclient)\n", + " Using cached rfc3986-2.0.0-py2.py3-none-any.whl.metadata (6.6 kB)\n", "Requirement already satisfied: msgpack>=0.5.2 in /opt/conda/lib/python3.12/site-packages (from oslo.serialization>=2.18.0->python-keystoneclient) (1.1.0)\n", - "Requirement already satisfied: tzdata>=2022.4 in /opt/conda/lib/python3.12/site-packages (from oslo.serialization>=2.18.0->python-keystoneclient) (2024.2)\n", - "Requirement already satisfied: pyparsing>=2.1.0 in /opt/conda/lib/python3.12/site-packages (from oslo.utils>=3.33.0->python-keystoneclient) (3.2.0)\n", - "Requirement already satisfied: setuptools in /opt/conda/lib/python3.12/site-packages (from pbr!=2.1.0,>=2.0.0->python-openstackclient) (75.6.0)\n", - "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (3.4.0)\n", + "Requirement already satisfied: tzdata>=2022.4 in /opt/conda/lib/python3.12/site-packages (from oslo.serialization>=2.18.0->python-keystoneclient) (2025.2)\n", + "Requirement already satisfied: pyparsing>=2.1.0 in /opt/conda/lib/python3.12/site-packages (from oslo.utils>=3.33.0->python-keystoneclient) (3.2.3)\n", + "Requirement already satisfied: setuptools in /opt/conda/lib/python3.12/site-packages (from pbr!=2.1.0,>=2.0.0->python-openstackclient) (78.1.0)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (3.4.1)\n", "Requirement already satisfied: idna<4,>=2.5 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (3.10)\n", - "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (2.3.0)\n", - "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (2024.12.14)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (2.4.0)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.12/site-packages (from requests>=2.27.0->python-openstackclient) (2025.1.31)\n", "Requirement already satisfied: pycparser in /opt/conda/lib/python3.12/site-packages (from cffi>=1.12->cryptography>=2.7->python-openstackclient) (2.22)\n", - "Requirement already satisfied: pyperclip>=1.8 in /opt/conda/lib/python3.12/site-packages (from cmd2>=1.0.0->cliff>=3.5.0->python-openstackclient) (1.9.0)\n", + "Collecting pyperclip>=1.8 (from cmd2>=1.0.0->cliff>=3.5.0->python-openstackclient)\n", + " Using cached pyperclip-1.9.0-py3-none-any.whl\n", "Requirement already satisfied: wcwidth>=0.2.10 in /opt/conda/lib/python3.12/site-packages (from cmd2>=1.0.0->cliff>=3.5.0->python-openstackclient) (0.2.13)\n", "Requirement already satisfied: parso<0.9.0,>=0.8.4 in /opt/conda/lib/python3.12/site-packages (from jedi>=0.16->ipython>=6.1.0->ipywidgets) (0.8.4)\n", "Requirement already satisfied: jsonpointer>=1.9 in /opt/conda/lib/python3.12/site-packages (from jsonpatch!=1.20,>=1.16->openstacksdk>=3.3.0->python-openstackclient) (3.0.0)\n", @@ -101,6 +129,34 @@ "Requirement already satisfied: executing>=1.2.0 in /opt/conda/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (2.1.0)\n", "Requirement already satisfied: asttokens>=2.1.0 in /opt/conda/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (3.0.0)\n", "Requirement already satisfied: pure_eval in /opt/conda/lib/python3.12/site-packages (from stack_data->ipython>=6.1.0->ipywidgets) (0.2.3)\n", + "Using cached python_openstackclient-8.0.0-py3-none-any.whl (1.1 MB)\n", + "Using cached python_keystoneclient-5.6.0-py3-none-any.whl (397 kB)\n", + "Using cached paramiko-3.5.1-py3-none-any.whl (227 kB)\n", + "Using cached bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl (284 kB)\n", + "Using cached cliff-4.10.0-py3-none-any.whl (84 kB)\n", + "Using cached debtcollector-3.0.0-py3-none-any.whl (23 kB)\n", + "Using cached iso8601-2.1.0-py3-none-any.whl (7.5 kB)\n", + "Using cached keystoneauth1-5.11.0-py3-none-any.whl (344 kB)\n", + "Using cached openstacksdk-4.5.0-py3-none-any.whl (1.8 MB)\n", + "Using cached osc_lib-4.0.0-py3-none-any.whl (93 kB)\n", + "Using cached oslo_config-9.8.0-py3-none-any.whl (131 kB)\n", + "Using cached oslo.i18n-6.5.1-py3-none-any.whl (46 kB)\n", + "Using cached oslo.serialization-5.7.0-py3-none-any.whl (25 kB)\n", + "Using cached oslo_utils-9.0.0-py3-none-any.whl (134 kB)\n", + "Using cached pbr-6.1.1-py2.py3-none-any.whl (108 kB)\n", + "Using cached PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl (856 kB)\n", + "Using cached python_cinderclient-9.7.0-py3-none-any.whl (256 kB)\n", + "Using cached stevedore-5.4.1-py3-none-any.whl (49 kB)\n", + "Using cached autopage-0.5.2-py3-none-any.whl (30 kB)\n", + "Using cached cmd2-2.5.11-py3-none-any.whl (152 kB)\n", + "Using cached dogpile_cache-1.4.0-py3-none-any.whl (62 kB)\n", + "Using cached netaddr-1.3.0-py3-none-any.whl (2.3 MB)\n", + "Using cached os_service_types-1.7.0-py2.py3-none-any.whl (24 kB)\n", + "Using cached prettytable-3.16.0-py3-none-any.whl (33 kB)\n", + "Using cached requestsexceptions-1.4.0-py2.py3-none-any.whl (3.8 kB)\n", + "Using cached rfc3986-2.0.0-py2.py3-none-any.whl (31 kB)\n", + "Installing collected packages: requestsexceptions, pyperclip, rfc3986, PrettyTable, pbr, netaddr, iso8601, debtcollector, cmd2, bcrypt, autopage, stevedore, pynacl, oslo.i18n, os-service-types, paramiko, oslo.utils, oslo.config, keystoneauth1, dogpile.cache, cliff, python-cinderclient, oslo.serialization, openstacksdk, python-keystoneclient, osc-lib, python-openstackclient\n", + "Successfully installed PrettyTable-3.16.0 autopage-0.5.2 bcrypt-4.3.0 cliff-4.10.0 cmd2-2.5.11 debtcollector-3.0.0 dogpile.cache-1.4.0 iso8601-2.1.0 keystoneauth1-5.11.0 netaddr-1.3.0 openstacksdk-4.5.0 os-service-types-1.7.0 osc-lib-4.0.0 oslo.config-9.8.0 oslo.i18n-6.5.1 oslo.serialization-5.7.0 oslo.utils-9.0.0 paramiko-3.5.1 pbr-6.1.1 pynacl-1.5.0 pyperclip-1.9.0 python-cinderclient-9.7.0 python-keystoneclient-5.6.0 python-openstackclient-8.0.0 requestsexceptions-1.4.0 rfc3986-2.0.0 stevedore-5.4.1\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } @@ -111,7 +167,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "c3718348-c7df-44d3-9811-66b7fa7ec7fb", "metadata": {}, "outputs": [], @@ -155,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "5bc6fac0-c5fa-44a7-9d29-38ea5164e4bc", "metadata": {}, "outputs": [], @@ -186,12 +242,14 @@ "The Keystone client is used to interact with OpenStack's identity service and enables to:\n", "\n", "- Access OpenStack components not exposed in the primary API.\n", - "- Retrieve detailed information about your projects" + "- Retrieve detailed information about your projects\n", + "\n", + "Make sure to authenticate on https://eu-1.iaas.open-science-cloud.ec.europa.eu/ page" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "b871dc55-172a-43da-81d7-b7fa796a7c2c", "metadata": {}, "outputs": [], @@ -203,7 +261,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "9a58d8c5-7dcd-4549-9b10-0456ccd66b30", "metadata": {}, "outputs": [ @@ -222,7 +280,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "90ef16930f794a71812097ee87883176", + "model_id": "190f79eec3d64952a1941b37feeecd98", "version_major": 2, "version_minor": 0 }, @@ -236,7 +294,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "43118c111a1740f7898f72861426f2ca", + "model_id": "0935ef7d353949ec8c78bb3409af17f8", "version_major": 2, "version_minor": 0 }, @@ -250,7 +308,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1cd77110d36042578de07d7469959646", + "model_id": "a0095b69890e4fca99fb7ba40b204a4e", "version_major": 2, "version_minor": 0 }, @@ -300,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "id": "7c50e961-b797-4e1c-a91b-e44487324c0c", "metadata": {}, "outputs": [ @@ -333,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "5e4b3a58-687b-471f-8c7f-a6db86bde820", "metadata": {}, "outputs": [ @@ -385,7 +443,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "id": "aceddf23-baeb-4e86-8100-52beec7241a4", "metadata": {}, "outputs": [ @@ -454,7 +512,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "id": "5e29662e-1576-48f8-9ae2-f9e2be0ffc60", "metadata": {}, "outputs": [ @@ -473,7 +531,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "341b08877fcc44f7a71e223b2713cdf0", + "model_id": "1ee722a7e3e5472d8af3d9037a8eaaa5", "version_major": 2, "version_minor": 0 }, @@ -499,7 +557,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a8ba85e215494b91a0b93a6e01128471", + "model_id": "5effa4322c8d48bd83cf2538e407246c", "version_major": 2, "version_minor": 0 }, @@ -525,7 +583,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3eefc30da3834df793223ad458b594a0", + "model_id": "8597753cd65e4382b60bb254807df518", "version_major": 2, "version_minor": 0 }, @@ -581,7 +639,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "id": "c10e65f1-1e6e-44f4-8e86-aa6e5452d10c", "metadata": {}, "outputs": [], @@ -598,7 +656,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "id": "616210a6-a2f4-4732-bdbe-b37684d9dd74", "metadata": {}, "outputs": [ @@ -642,7 +700,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 12, "id": "f9a37e64-ba85-43b3-b234-9ac09e743951", "metadata": {}, "outputs": [ @@ -651,7 +709,7 @@ "output_type": "stream", "text": [ "Creating private network...\n", - "Created network: My private network (ID: fca7d4d2-4c2c-4a25-9ed8-9d65c9d0d52f)\n" + "Created network: My private network (ID: 8207ddc7-4002-40d7-b9b5-cfedf6247024)\n" ] } ], @@ -679,7 +737,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 13, "id": "6a36a9da-14fc-41be-92a7-6e4b140c1d47", "metadata": {}, "outputs": [ @@ -688,7 +746,7 @@ "output_type": "stream", "text": [ "Creating subnet...\n", - "Created subnet: My internal network (ID: 7558ff73-1885-4707-aa2e-bf9dbdd0fa19)\n" + "Created subnet: My internal network (ID: 444e1046-e893-4381-b092-b7645bd96347)\n" ] } ], @@ -717,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 14, "id": "1720eb87-7fb2-420b-bac4-2b9d8f5c0d31", "metadata": {}, "outputs": [ @@ -726,7 +784,7 @@ "output_type": "stream", "text": [ "Creating router with external network: PSNC-EXT-PUB1-EDU\n", - "Created router: My router (ID: 57abc611-b306-458e-bb17-cbdc49cdf9fb)\n", + "Created router: My router (ID: cbde5d42-2001-4a9c-a1aa-fa2ef97e31f6)\n", "Connected subnet My internal network to router My router\n" ] } @@ -768,32 +826,75 @@ "## ๐ Launch VM" ] }, + { + "cell_type": "markdown", + "id": "7f29a0cd-897c-4c93-81d7-edf8d24f7240", + "metadata": {}, + "source": [ + "> Create a new volume for VM with a size of 10 GB using your OpenStack connection" + ] + }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 24, + "id": "1329314a-9aad-4bee-97b4-f4fe2022e42a", + "metadata": {}, + "outputs": [], + "source": [ + "new_volume = scoped_openstack_connection.create_volume(10)" + ] + }, + { + "cell_type": "markdown", + "id": "9d8c4f19-da3b-4faa-99fb-1d79f194c637", + "metadata": {}, + "source": [ + "### Launch VM and run a **cloud-init** script to:\n", + " - Update system packages\n", + " - Install **NGINX**\n", + " - Set up a simple homepage" + ] + }, + { + "cell_type": "code", + "execution_count": 17, "id": "4cd699a0-ddd6-4356-b828-95673e15e405", "metadata": {}, "outputs": [], "source": [ "# VM parameters\n", - "new_volume = scoped_openstack_connection.create_volume(10)\n", + "cloud_init_script = \"\"\"#!/bin/bash\n", + "apt-get update\n", + "apt-get upgrade -y\n", + "apt-get install -y nginx\n", + "echo 'Hello from my VM' > /var/www/html/index.html\n", + "\"\"\"\n", "vm_name = \"new_vm\"\n", "server = scoped_openstack_connection.create_server(\n", " name=vm_name,\n", " image=selected_image,\n", " flavor=selected_flavor,\n", " network=network, # Use new private network\n", + " userdata=cloud_init_script,\n", " key_name=\"key\",\n", " volumes=[new_volume],\n", " security_groups=[new_security_group.name]\n", ")\n", "# Waiting until all is ready\n", - "time.sleep(10)" + "time.sleep(170)" + ] + }, + { + "cell_type": "markdown", + "id": "915cde8d-f668-44a1-913d-24436a93e4d4", + "metadata": {}, + "source": [ + "> It will take some time for `cloud_init_script` to finish." ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 18, "id": "47ac6e4e-ee8d-413b-a7bf-a7f1562d01e7", "metadata": {}, "outputs": [], @@ -807,12 +908,13 @@ "id": "eeae3963-20cf-4283-a40c-c6ab54ebea7d", "metadata": {}, "source": [ - "### Configure floating IP associated with the VM for an external access" + "### Configure floating IP associated with the VM for an external access\n", + "To enable external access to your VM, create a floating IP and associate it with your external network:\n" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 19, "id": "b61224ce-446d-42f7-b3d6-12e204ef26b5", "metadata": {}, "outputs": [], @@ -822,7 +924,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 20, "id": "d547d657-15d5-4c9f-86f8-2ffd6f2f3466", "metadata": {}, "outputs": [ @@ -830,7 +932,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Floating IP: 62.3.174.55\n" + "Floating IP: 62.3.174.177\n" ] } ], @@ -849,17 +951,17 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 21, "id": "8b06239e-fae7-464e-a887-5ce9c36b124c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "openstack.compute.v2.server.Server(id=63542c19-0751-4b99-a42d-3d5cc22bb1a6, name=new_vm, status=BUILD, tenant_id=db6b4eb2d6fe454191e8d39b088564cd, user_id=0814e963545daece81ed1e1bda7b90ca33b58889e97e843aeb29ac634d15ae84, metadata={}, hostId=d54760d94ecc699c04cb77d71fa37050d12057e3460d7661477b5bf8, image={'id': '7816da3d-cc63-4f01-bc2a-832bf2391eb8', 'links': [{'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8774/images/7816da3d-cc63-4f01-bc2a-832bf2391eb8'}]}, flavor={'vcpus': 2, 'ram': 8192, 'disk': 50, 'ephemeral': 0, 'swap': 0, 'original_name': 'M1-NVME-2vCPU-8R-50D', 'extra_specs': {'aggregate_instance_extra_specs:nvme': 'general-purpose', 'quota:disk_read_bytes_sec': '524288000', 'quota:disk_read_iops_sec': '50000', 'quota:disk_write_bytes_sec': '524288000', 'quota:disk_write_iops_sec': '10000'}}, created=2025-04-14T08:26:48Z, updated=2025-04-14T08:26:52Z, addresses={}, accessIPv4=, accessIPv6=, links=[{'rel': 'self', 'href': 'https://claudius.cloud.psnc.pl:8774/v2.1/servers/63542c19-0751-4b99-a42d-3d5cc22bb1a6'}, {'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8774/servers/63542c19-0751-4b99-a42d-3d5cc22bb1a6'}], OS-DCF:diskConfig=MANUAL, progress=0, OS-EXT-AZ:availability_zone=BST0K10, pinned_availability_zone=BST0K10, config_drive=, key_name=key, OS-SRV-USG:launched_at=None, OS-SRV-USG:terminated_at=None, security_groups=[{'name': 'My VM Security Group'}], OS-EXT-STS:task_state=spawning, OS-EXT-STS:vm_state=building, OS-EXT-STS:power_state=0, os-extended-volumes:volumes_attached=[{'id': '6395a1f4-644e-4a6a-9d98-7892dba997b0', 'delete_on_termination': False}], locked=False, locked_reason=None, description=None, tags=[], trusted_image_certificates=None, OS-EXT-SRV-ATTR:hostname=new-vm, server_groups=[], location=Munch({'cloud': 'api.cloud.psnc.pl', 'region_name': None, 'zone': 'BST0K10', 'project': Munch({'id': 'db6b4eb2d6fe454191e8d39b088564cd', 'name': None, 'domain_id': None, 'domain_name': None})}))" + "openstack.compute.v2.server.Server(id=e9ff03f2-2c79-4fed-a0bd-0db03a0d77c6, name=new_vm, status=ACTIVE, tenant_id=db6b4eb2d6fe454191e8d39b088564cd, user_id=0814e963545daece81ed1e1bda7b90ca33b58889e97e843aeb29ac634d15ae84, metadata={}, hostId=00645010378491da449ee53dea83e56eb7bb1376bc695df081a5f6ec, image={'id': '7816da3d-cc63-4f01-bc2a-832bf2391eb8', 'links': [{'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8774/images/7816da3d-cc63-4f01-bc2a-832bf2391eb8'}]}, flavor={'vcpus': 2, 'ram': 8192, 'disk': 50, 'ephemeral': 0, 'swap': 0, 'original_name': 'M1-NVME-2vCPU-8R-50D', 'extra_specs': {'aggregate_instance_extra_specs:nvme': 'general-purpose', 'quota:disk_read_bytes_sec': '524288000', 'quota:disk_read_iops_sec': '50000', 'quota:disk_write_bytes_sec': '524288000', 'quota:disk_write_iops_sec': '10000'}}, created=2025-05-20T08:54:21Z, updated=2025-05-20T08:55:13Z, addresses={'My private network': [{'version': 4, 'addr': '192.168.1.176', 'OS-EXT-IPS:type': 'fixed', 'OS-EXT-IPS-MAC:mac_addr': 'fa:16:3e:f4:dd:5d'}]}, accessIPv4=, accessIPv6=, links=[{'rel': 'self', 'href': 'https://claudius.cloud.psnc.pl:8774/v2.1/servers/e9ff03f2-2c79-4fed-a0bd-0db03a0d77c6'}, {'rel': 'bookmark', 'href': 'https://claudius.cloud.psnc.pl:8774/servers/e9ff03f2-2c79-4fed-a0bd-0db03a0d77c6'}], OS-DCF:diskConfig=MANUAL, progress=0, OS-EXT-AZ:availability_zone=BST0K10, pinned_availability_zone=BST0K10, config_drive=, key_name=key, OS-SRV-USG:launched_at=2025-05-20T08:55:13.000000, OS-SRV-USG:terminated_at=None, security_groups=[{'name': 'My VM Security Group'}], OS-EXT-STS:task_state=None, OS-EXT-STS:vm_state=active, OS-EXT-STS:power_state=1, os-extended-volumes:volumes_attached=[{'id': 'e5144f9b-0047-419c-861a-42a30d06dfb5', 'delete_on_termination': False}], locked=False, locked_reason=None, description=None, tags=[], trusted_image_certificates=None, OS-EXT-SRV-ATTR:hostname=new-vm, server_groups=[], location=Munch({'cloud': 'api.cloud.psnc.pl', 'region_name': None, 'zone': 'BST0K10', 'project': Munch({'id': 'db6b4eb2d6fe454191e8d39b088564cd', 'name': None, 'domain_id': None, 'domain_name': None})}))" ] }, - "execution_count": 26, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -884,16 +986,12 @@ "id": "ffd09a73-4a84-440e-8e8c-117b6b4163fc", "metadata": {}, "source": [ - "### ๐ Connect to Your VM via SSH and configure web page\n", - "- Run a **cloud-init-like** script to:\n", - " - Update system packages\n", - " - Install **NGINX**\n", - " - Set up a simple homepage" + "### ๐ Connect to Your VM via SSH " ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 22, "id": "43fbe01e-163a-44b1-ba1d-e7589562a918", "metadata": {}, "outputs": [ @@ -901,9 +999,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "Connecting to VM at 62.3.174.55...\n", - "Try accessing: http://62.3.174.55\n", - "Access VM via ssh: ssh -i mykey.pem ubuntu@62.3.174.55\n" + "Connecting to VM at 62.3.174.177...\n", + "Try accessing: http://62.3.174.177\n", + "Access VM via ssh: ssh -i mykey.pem ubuntu@62.3.174.177\n" ] } ], @@ -915,15 +1013,8 @@ " ssh.connect(\n", " hostname=floating_ip_address,\n", " username=\"ubuntu\",\n", - " key_filename=\"key.pem\" # \"/path/to/mykey.pem\"\n", + " key_filename=\"key.pem\" # \"/path/to/key.pem\"\n", " )\n", - " cloud_init_script = \"\"\"\n", - " sudo apt-get update\n", - " sudo apt-get upgrade -y\n", - " sudo apt-get install -y nginx\n", - " sudo bash -c \"echo 'Hello from my VM' > /var/www/html/index.html\"\n", - " \"\"\"\n", - " ssh.exec_command(cloud_init_script)\n", " ssh.close()\n", "except Exception as e:\n", " print(f\"SSH failed: {e}\")\n", @@ -933,14 +1024,6 @@ "print(f\"Access VM via ssh: ssh -i mykey.pem ubuntu@{floating_ip_address}\")" ] }, - { - "cell_type": "markdown", - "id": "2e5e5e46-791d-406a-9f6f-be3d0c234b0d", - "metadata": {}, - "source": [ - "> It will take some time for script to finish, so the provided link will not be accessible instantly" - ] - }, { "cell_type": "markdown", "id": "dd588470-3fc1-4b41-9bba-c929743fa9c9", @@ -1020,7 +1103,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 25, "id": "301cbef1-ec92-439f-8f2d-fca92e2c33a9", "metadata": {}, "outputs": [ @@ -1030,7 +1113,7 @@ "True" ] }, - "execution_count": 30, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -1042,17 +1125,17 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 29, "id": "dc283305-7e0e-4967-84e9-d1573b45136e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "False" + "True" ] }, - "execution_count": 31, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -1060,7 +1143,24 @@ "source": [ "# If you do not wish to use generated key-pair anymore\n", "# you can simply delete it\n", - "scoped_openstack_connection.delete_keypair(\"mykey\")" + "scoped_openstack_connection.delete_keypair(\"key\")" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "c642ccf6-83d8-4e8e-9d3d-0774b16706fc", + "metadata": {}, + "outputs": [], + "source": [ + "# Detach router interface first\n", + "scoped_openstack_connection.network.remove_interface_from_router(\n", + " router,\n", + " subnet_id=subnet.id \n", + ")\n", + "scoped_openstack_connection.network.delete_router(router)\n", + "scoped_openstack_connection.network.delete_security_group(new_security_group)\n", + "scoped_openstack_connection.network.delete_network(network)" ] } ], @@ -1080,7 +1180,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.12.10" } }, "nbformat": 4, -- GitLab From cd89baee41ac7f60260540b7afa54825db0ce2b4 Mon Sep 17 00:00:00 2001 From: Karen Pailozian <pailozian@cesnet.cz> Date: Wed, 21 May 2025 10:54:09 +0200 Subject: [PATCH 3/3] style: fix pylint warnings and clean up formatting --- openstack_eosc.ipynb | 141 ++++++++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 61 deletions(-) diff --git a/openstack_eosc.ipynb b/openstack_eosc.ipynb index 155108a..3e7de15 100644 --- a/openstack_eosc.ipynb +++ b/openstack_eosc.ipynb @@ -1,27 +1,5 @@ { "cells": [ - { - "cell_type": "markdown", - "id": "f1d44b71-9709-467e-92d4-c1faa31a93e7", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "# Deploying Your First Virtual Machine on PSNC OpenStack\n", - "\n", - "Welcome to this hands-on tutorial for launching and configuring your first Virtual Machine (VM) in the PSNC OpenStack cloud environment. This guide will walk you through each step of the deployment processโfrom authentication to full VM provisioning and access.\n", - "\n", - "๐ **Further reading:** [PSNC OpenStack Virtual Machines](https://docs.psnc.pl/display/EOSCUserGuides/Virtual+Machines)\n" - ] - }, - { - "cell_type": "markdown", - "id": "00e621e9-5493-45aa-8cea-dcbb14ab0df6", - "metadata": {}, - "source": [ - "# Install the required libraries" - ] - }, { "cell_type": "code", "execution_count": 1, @@ -162,29 +140,41 @@ } ], "source": [ - "pip install python-openstackclient python-keystoneclient ipywidgets paramiko" + "!pip install python-openstackclient python-keystoneclient ipywidgets paramiko" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "c3718348-c7df-44d3-9811-66b7fa7ec7fb", "metadata": {}, "outputs": [], "source": [ + "\"\"\"\n", + "Import the required libraries\n", + "\"\"\"\n", + "import time\n", "import sys\n", "import paramiko\n", - "import yaml\n", "from keystoneauth1.session import Session\n", "from keystoneauth1.identity.v3.oidc import OidcAccessToken\n", - "from keystoneauth1.identity.v3.application_credential import ApplicationCredential\n", "from keystoneclient.v3.client import Client\n", "from openstack.connection import Connection\n", + "from openstack.exceptions import SDKException\n", "import ipywidgets as widgets\n", - "import base64\n", - "import time\n", - "from IPython.display import display, clear_output, Markdown\n", - "from openstack.exceptions import ResourceNotFound, SDKException" + "from IPython.display import display, clear_output, Markdown" + ] + }, + { + "cell_type": "markdown", + "id": "f1d44b71-9709-467e-92d4-c1faa31a93e7", + "metadata": {}, + "source": [ + "# Deploying Your First Virtual Machine on PSNC OpenStack\n", + "\n", + "Welcome to this hands-on tutorial for launching and configuring your first Virtual Machine (VM) in the PSNC OpenStack cloud environment. This guide will walk you through each step of the deployment processโfrom authentication to full VM provisioning and access.\n", + "\n", + "๐ **Further reading:** [PSNC OpenStack Virtual Machines](https://docs.psnc.pl/display/EOSCUserGuides/Virtual+Machines)\n" ] }, { @@ -211,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 11, "id": "5bc6fac0-c5fa-44a7-9d29-38ea5164e4bc", "metadata": {}, "outputs": [], @@ -219,9 +209,10 @@ "def load_access_token(token_file_path=\"/var/run/secrets/oidc/access_token\"):\n", " \"\"\"Reads access token from specified file\"\"\"\n", " try:\n", - " return open(token_file_path, \"r\").read()\n", + " return open(token_file_path, \"r\", encoding='utf-8').read()\n", " except IOError:\n", " print(\"Reading from access token file failed.\", file=sys.stderr)\n", + " return None\n", "\n", "cloud_creds = OidcAccessToken(auth_url=\"https://api.cloud.psnc.pl:5000/v3/\",\n", " identity_provider=\"aai.open-science-cloud.ec.europa.eu\",\n", @@ -249,7 +240,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "b871dc55-172a-43da-81d7-b7fa796a7c2c", "metadata": {}, "outputs": [], @@ -261,7 +252,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "9a58d8c5-7dcd-4549-9b10-0456ccd66b30", "metadata": {}, "outputs": [ @@ -280,7 +271,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "190f79eec3d64952a1941b37feeecd98", + "model_id": "70fe6759b6f843f5afe6aad18e66ea63", "version_major": 2, "version_minor": 0 }, @@ -294,7 +285,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "0935ef7d353949ec8c78bb3409af17f8", + "model_id": "f15d05ad5d514e10872107301d1a3af2", "version_major": 2, "version_minor": 0 }, @@ -308,7 +299,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a0095b69890e4fca99fb7ba40b204a4e", + "model_id": "9bc77f482af849bba0e3ae82e4458c51", "version_major": 2, "version_minor": 0 }, @@ -321,6 +312,10 @@ } ], "source": [ + "# pylint: disable=invalid-name, global-statement, unused-argument, protected-access\n", + "\n", + "scoped_cloud_session = None\n", + "scoped_openstack_connection = None\n", "clear_output(wait=True) # Clear previous output first\n", "display(Markdown(\"## Scope to one of your projects you are entitled to access\"))\n", "\n", @@ -331,13 +326,14 @@ ")\n", "connect_button = widgets.Button(description=\"Connect to project\", button_style=\"success\")\n", "output = widgets.Output()\n", - "\n", "def on_connect_clicked(b):\n", + " \"\"\"Handle click event to connect to the selected OpenStack project.\"\"\"\n", " with output:\n", " clear_output()\n", " idx = project_dropdown.value\n", " selected_project = my_projects[idx]\n", - " print(f\"๐ Connecting to project: {selected_project.name} (ID: {selected_project.id}, Domain: {selected_project.domain_id})\")\n", + " print(f\"๐ Connecting to project: {selected_project.name} (ID: {selected_project.id}, \\\n", + " Domain: {selected_project.domain_id})\")\n", " scoped_cloud_creds = OidcAccessToken(\n", " auth_url=\"https://api.cloud.psnc.pl:5000/v3/\",\n", " identity_provider=\"aai.open-science-cloud.ec.europa.eu\",\n", @@ -358,7 +354,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "id": "7c50e961-b797-4e1c-a91b-e44487324c0c", "metadata": {}, "outputs": [ @@ -366,12 +362,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Your current project id: db6b4eb2d6fe454191e8d39b088564cd\n" + "Your current project id: db6b4eb2d6fe454191e8d39b088564cd\n" ] } ], "source": [ - "print(\"Your current project id: \", scoped_openstack_connection.current_project_id) " + "print(\"Your current project id:\", scoped_openstack_connection.current_project_id)\n" ] }, { @@ -405,20 +401,20 @@ } ], "source": [ - "key_name = \"key\"\n", - "new_keypair = scoped_openstack_connection.create_keypair(key_name)\n", + "KEY_NAME = \"key\"\n", + "new_keypair = scoped_openstack_connection.create_keypair(KEY_NAME)\n", "#Generating key-pair using existing public key\n", "#scoped_openstack_connection.create_keypair(\"mykey2\", public_key=\"ssh-rsa ....\")\n", "\n", "#If you let OpenStack generate your key-pair you will need to save your\n", "#private and public keys for later use\n", - "with open(f\"{key_name}.pem\", \"w\") as priv_file:\n", + "with open(f\"{KEY_NAME}.pem\", \"w\", encoding=\"utf-8\") as priv_file:\n", " priv_file.write(new_keypair.private_key)\n", - " print(f\"Private key saved to {key_name}.pem\")\n", + " print(f\"Private key saved to {KEY_NAME}.pem\")\n", "\n", - "with open(f\"{key_name}.pub\", \"w\") as pub_file:\n", + "with open(f\"{KEY_NAME}.pub\", \"w\", encoding=\"utf-8\") as pub_file:\n", " pub_file.write(new_keypair.public_key)\n", - " print(f\"Public key saved to {key_name}.pub\")" + " print(f\"Public key saved to {KEY_NAME}.pub\")" ] }, { @@ -531,7 +527,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "1ee722a7e3e5472d8af3d9037a8eaaa5", + "model_id": "be2f61573a6f4dc7b38090a376e893d9", "version_major": 2, "version_minor": 0 }, @@ -557,7 +553,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5effa4322c8d48bd83cf2538e407246c", + "model_id": "6046a6f70f0c4922ae92bafd8f79fc1e", "version_major": 2, "version_minor": 0 }, @@ -583,7 +579,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8597753cd65e4382b60bb254807df518", + "model_id": "6155860fd9da407f81c665af2f73a859", "version_major": 2, "version_minor": 0 }, @@ -597,24 +593,27 @@ ], "source": [ "def format_size_gb(size_bytes):\n", + " \"\"\"Convert a size in bytes to a human-readable string in GB.\"\"\"\n", " return f\"{size_bytes / (1024 ** 3):.2f} GB\"\n", "\n", "def format_image_options(images):\n", + " \"\"\"Format a list of image objects for display in a dropdown.\"\"\"\n", " return [\n", " f\"{image.name} (ID: {image.id}, Size: {format_size_gb(image.size)})\"\n", " for image in images\n", " ]\n", "\n", "def format_generic_options(resources, label_attr='name', id_attr='id'):\n", + " \"\"\"Format a list of OpenStack resources into label (ID) format.\"\"\"\n", " return [f\"{getattr(res, label_attr)} (ID: {getattr(res, id_attr)})\" for res in resources]\n", - " \n", - "images = list(scoped_openstack_connection.compute.images())\n", + "\n", + "available_images = list(scoped_openstack_connection.compute.images())\n", "flavors = list(scoped_openstack_connection.compute.flavors())\n", "networks = list(scoped_openstack_connection.network.networks())\n", "\n", "display(Markdown(\"### Available Images\"))\n", "image_dropdown = widgets.Dropdown(\n", - " options=format_image_options(images),\n", + " options=format_image_options(available_images),\n", " description='Image:',\n", " layout=widgets.Layout(width='85%')\n", ")\n", @@ -645,13 +644,17 @@ "outputs": [], "source": [ "def get_selected_name(dropdown_value):\n", + " \"\"\"Extract the name part from a dropdown value string formatted as 'Name (ID: id)'.\"\"\"\n", " return dropdown_value.split(\" (ID: \")[0]\n", + "\n", "def get_selected_id(dropdown_value):\n", + " \"\"\"Extract the ID part from a dropdown value string formatted as 'Name (ID: id)'.\"\"\"\n", " return dropdown_value.split(\" (ID: \")[1].split(\")\")[0]\n", + "\n", "selected_image = get_selected_name(image_dropdown.value)\n", "selected_flavor = get_selected_name(flavor_dropdown.value)\n", "selected_network = get_selected_name(network_dropdown.value)\n", - "selected_network_id = get_selected_id(network_dropdown.value)" + "selected_network_id = get_selected_id(network_dropdown.value)\n" ] }, { @@ -863,19 +866,19 @@ "outputs": [], "source": [ "# VM parameters\n", - "cloud_init_script = \"\"\"#!/bin/bash\n", + "CLOUD_INIT_SCRIPT = \"\"\"#!/bin/bash\n", "apt-get update\n", "apt-get upgrade -y\n", "apt-get install -y nginx\n", "echo 'Hello from my VM' > /var/www/html/index.html\n", "\"\"\"\n", - "vm_name = \"new_vm\"\n", + "VM_NAME = \"new_vm\"\n", "server = scoped_openstack_connection.create_server(\n", - " name=vm_name,\n", + " name=VM_NAME,\n", " image=selected_image,\n", " flavor=selected_flavor,\n", " network=network, # Use new private network\n", - " userdata=cloud_init_script,\n", + " userdata=CLOUD_INIT_SCRIPT,\n", " key_name=\"key\",\n", " volumes=[new_volume],\n", " security_groups=[new_security_group.name]\n", @@ -889,7 +892,7 @@ "id": "915cde8d-f668-44a1-913d-24436a93e4d4", "metadata": {}, "source": [ - "> It will take some time for `cloud_init_script` to finish." + "> It will take some time for `CLOUD_INIT_SCRIPT` to finish." ] }, { @@ -1156,12 +1159,28 @@ "# Detach router interface first\n", "scoped_openstack_connection.network.remove_interface_from_router(\n", " router,\n", - " subnet_id=subnet.id \n", + " subnet_id=subnet.id\n", ")\n", "scoped_openstack_connection.network.delete_router(router)\n", "scoped_openstack_connection.network.delete_security_group(new_security_group)\n", "scoped_openstack_connection.network.delete_network(network)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "189c00ae-378d-4647-8226-bb5e1e5e0c03", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31a05bda-47a1-4d00-abe5-3514cff6a7cb", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { -- GitLab