import imp import json import os from myOpenstackApp.logger import log import myOpenstackApp.settings import myOpenstackApp.OpenStackConnection class myopenstack_keystone(): def __init__(self,conn: myOpenstackApp.OpenStackConnection.OpenStackConnection_x ) -> None: self.serviceData={} self.catalogData={} self.projectData={} self.connection=conn def getAllProjects(_self): _self.projectData=_self.connection.make_request("GET", "projects", "", os.getenv("OS_AUTH_URL")).json() return _self.projectData def getCatalog(_self): catalogData=_self.connection.make_request("GET", "endpoints", "", os.getenv("OS_AUTH_URL")).json() serviceData=_self.connection.make_request("GET", "services", "", os.getenv("OS_AUTH_URL")).json() # print(serviceData) _self.serviceData=serviceData _self.catalogData=catalogData return catalogData def getServicebyID(_self,id): # print(_self.serviceData) for _service in _self.serviceData['services']: if str(_service['id']).lower()==str(id).lower(): # print(_service) return(_service) def getServicebyName(_self,name): for _service in _self.serviceData['services']: if str(_service['name']).lower()==str(name).lower(): # print(_service) return(_service) def getEndpointByServiceIDAndInterface(_self,id,interface): for _endpoint in _self.catalogData['endpoints']: if str(_endpoint['service_id']).lower()==str(id).lower(): if str(_endpoint['interface']).lower()==str(interface).lower(): # print(_endpoint) return(_endpoint) def getEndpointByNameAndInterface(_self,name,interface): id=_self.getServicebyName(name)['id'] for _endpoint in _self.catalogData['endpoints']: if str(_endpoint['service_id']).lower()==str(id).lower(): if str(_endpoint['interface']).lower()==str(interface).lower(): # print(_endpoint) return(_endpoint) def createProject(_self,name,description): log.info("Creating a project") data={ "project": { "description": description, "enabled": True, "is_domain": False, "name": name } } _self.newProjectData=_self.connection.make_request("POST", "projects", data, os.getenv("OS_AUTH_URL")).json() return _self.newProjectData def deleteProject(_self,id): log.info("Deleting a project") _self.newProjectData=_self.connection.make_request("DELETE", "projects/"+id, "", os.getenv("OS_AUTH_URL")) return _self.newProjectData