From 3c7abb703e126edfa7dc7b320a2033ef7c58692f Mon Sep 17 00:00:00 2001
From: Massimo <massimo.canonico@uniupo.it>
Date: Fri, 4 Oct 2024 15:05:59 +0000
Subject: [PATCH] Update openstack.py

---
 easycloud/common/openstack.py | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

diff --git a/easycloud/common/openstack.py b/easycloud/common/openstack.py
index 4960a8d..156a76c 100644
--- a/easycloud/common/openstack.py
+++ b/easycloud/common/openstack.py
@@ -17,15 +17,31 @@ class OpenStackBaseConfManager(MetaConfManager):
         Read login data from settings.cfg
         """
         # URL Regex took from http://www.noah.org/wiki/RegEx_Python#URL_regex_pattern
-        self.os_auth_url = self.get_parameter("openstack", "os_auth_url",
-                                              return_type=str,
-                                              regex="http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+")
+        self.os_auth_url = self.get_parameter(
+            "openstack", "os_auth_url", return_type=str,
+            regex="http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"
+        )
         self.os_username = self.get_parameter("openstack", "os_username", return_type=str)
         self.os_password = self.get_parameter("openstack", "os_password", return_type=str)
         self.os_project_name = self.get_parameter("openstack", "os_project_name", return_type=str)
-        self.os_project_id = self.get_parameter("openstack", "os_project_id", return_type=str)
+        self.os_project_id = self.get_parameter("openstack", "os_project_id", return_type=str, default=None)
         self.os_region = self.get_parameter("openstack", "os_region", return_type=str)
-        self.os_telemetry_metering  = self.get_parameter("openstack", "os_telemetry_metering", return_type=str)
+        self.os_user_domain_name = self.get_parameter("openstack", "os_user_domain_name", return_type=str,
+                                                      default="Default")
+        self.os_project_domain_name = self.get_parameter("openstack", "os_project_domain_name", return_type=str,
+                                                         default="Default")
+
+        # OIDC Params
+        self.identity_provider = self.get_parameter("openstack", "identity_provider", return_type=str)
+        self.protocol = self.get_parameter("openstack", "protocol", return_type=str)
+        self.discovery_endpoint = self.get_parameter("openstack", "discovery_endpoint", return_type=str)
+        self.client_id = self.get_parameter("openstack", "client_id", return_type=str)
+        self.client_secret = self.get_parameter("openstack", "client_secret", return_type=str, default=None)
+        self.access_token_type = self.get_parameter("openstack", "access_token_type", return_type=str)
+
+        # Telemetry
+        self.os_telemetry_metering = self.get_parameter("openstack", "os_telemetry_metering", return_type=str,
+                                                        default=None)
 
     def read_platform_options(self):
         self.demo_reservation_id = self.get_parameter("re_demo", "demo_reservation_id", return_type=str)
-- 
GitLab