From 7cbd9a2604a1b58595fa74bf86d65cce42ecf2ca Mon Sep 17 00:00:00 2001 From: Julien MOROT Date: Fri, 10 Jan 2025 16:54:05 +0100 Subject: [PATCH 1/4] add initial functions to generate openiaas datasources for cloud temple terraform provider --- libs/ShivaApi.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/libs/ShivaApi.py b/libs/ShivaApi.py index ba454ec..ad82c40 100644 --- a/libs/ShivaApi.py +++ b/libs/ShivaApi.py @@ -43,7 +43,41 @@ def get_esxi_datastores(self): if response.status_code == HTTPStatus.OK: return self.json_response(response) return self.error_response(response) + + def get_all_contentlibs(self): + """Find all content libraries""" + response = self.get(self.base_url + "/v1/vcenters/content_libraries") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) + def get_all_contentlibsitems(self): + """Find all content libraries items""" + response = self.get(self.base_url + "/v1/vcenters/content_libraries/items") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) + + def get_openiaas_templates(self): + """Find all openiaas templates""" + response = self.get(self.base_url + "/v1/open_iaas/templates") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) + + def get_all_vcnetworks(self): + """Find all vc networks""" + response = self.get(self.base_url + "/v1/vcenters/networks") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) + + def get_openiaas_networks(self): + """Find all vc networks""" + response = self.get(self.base_url + "/v1/open_iaas/networks") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) def get_vm_network_adapters(self, vm_id: str): """Find network adapters for virtual machine""" @@ -88,6 +122,13 @@ def get_hosts(self): if response.status_code == HTTPStatus.OK: return self.json_response(response) return self.error_response(response) + + def get_openiaas_hosts(self): + """Find Hosts""" + response = self.get(self.base_url + "/v1/open_iaas/hosts") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) def get_hosts_by_vdc(self, vdc_id): """Find Hots with Virtual Datacenter ID Filter""" From 81600e681fb1b0e0db87aac5f810ef82f3d08fc3 Mon Sep 17 00:00:00 2001 From: Julien MOROT Date: Fri, 10 Jan 2025 17:58:17 +0100 Subject: [PATCH 2/4] Add storage repo --- libs/ShivaApi.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/ShivaApi.py b/libs/ShivaApi.py index ad82c40..4c09205 100644 --- a/libs/ShivaApi.py +++ b/libs/ShivaApi.py @@ -178,6 +178,13 @@ def get_datastore_clusters_by_dc(self, id_dc): if response.status_code == HTTPStatus.OK: return self.json_response(response) return self.error_response(response) + + def get_openiaas_storage_repositories(self): + """Find all storage_repositories""" + response = self.get(self.base_url + "/v1/open_iaas/storage_repositories") + if response.status_code == HTTPStatus.OK: + return self.json_response(response) + return self.error_response(response) def get_vcenters(self): """Find vCenter servers""" From b6c11d9a4ebd59427a5233779c84ee7baa55b197 Mon Sep 17 00:00:00 2001 From: kcn Date: Mon, 27 Jan 2025 14:47:14 +0100 Subject: [PATCH 3/4] Here's my updates of the "normal" expectations of the refresh token flow --- libs/httpClient.py | 32 +------------------------------- 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/libs/httpClient.py b/libs/httpClient.py index f18d351..c20bcd9 100644 --- a/libs/httpClient.py +++ b/libs/httpClient.py @@ -67,11 +67,7 @@ def auth(self): exp_epoch = datetime.fromtimestamp(self.jwt_decoded['exp']) time_now = datetime.now() diff = (exp_epoch - time_now).total_seconds() / 60 - if 10 > diff > 1: - if hasattr(self, 'logger'): - self.logger.debug("10 > diff > 1 - token is valide") - self.__refresh() - elif diff < 1: + if diff < 10: self.__login() def __login(self): @@ -100,32 +96,6 @@ def __login(self): self.logger.error("request exception %s", err) raise HttpClientException("request exception", err) from err - def __refresh(self): - try: - headers = { - 'Content-Type': 'application/json', - 'accept': 'application/json', - 'Authorization': "Bearer " + self.bearer_token - } - - refreshToken = { - 'refreshToken': self.bearer_token - } - - # Retrieve bearer - bearer_request = requests.post(url=self.url + "/api/iam/v2/auth/refresh", headers=headers, - json=refreshToken) - - if bearer_request.status_code != 200: - raise HttpClientException("Cannot generate bearer token", bearer_request.reason) - else: - self.bearer_token = bearer_request.json()['refresh_token'] - - except RequestException as err: - if hasattr(self, 'logger'): - self.logger.error("request exception %s", err) - raise HttpClientException("request exception", err) from err - def __execute(self, req: Request) -> Response: self.auth() try: From 5ffb7c3dd7a6fb1dd949a3962e780d54b1916bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o?= <33425208+Theoooooo@users.noreply.github.com> Date: Tue, 4 Mar 2025 11:57:14 +0100 Subject: [PATCH 4/4] Update policies call --- libs/ShivaApi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ShivaApi.py b/libs/ShivaApi.py index 4c09205..f412ab1 100644 --- a/libs/ShivaApi.py +++ b/libs/ShivaApi.py @@ -301,7 +301,7 @@ def get_jobs(self): def get_policies(self): """Find SLA Policies""" - response = self.get(self.base_url + "/v1/policies") + response = self.get(self.base_url + "/v1/spp/policies") if response.status_code == HTTPStatus.OK: return self.json_response(response) return self.error_response(response)