103 lines
3.6 KiB
Python
103 lines
3.6 KiB
Python
# import streamlit as st
|
|
import requests
|
|
# This API client is used by streamlit and by the websocket server
|
|
|
|
class IaaSClient:
|
|
def __init__(self, api_key, base_url="http://localhost:5000/api"):
|
|
self.base_url = base_url
|
|
self.api_key=api_key
|
|
|
|
def _make_request(self, method, endpoint, data=None):
|
|
headers = {
|
|
'X-API-KEY': self.api_key,
|
|
'Content-Type': 'application/json'
|
|
}
|
|
url = f"{self.base_url}/{endpoint}"
|
|
|
|
try:
|
|
response = requests.request(method, url, headers=headers, json=data)
|
|
if response.status_code == 401:
|
|
print("Authentication failed. Please check your API key.")
|
|
return None
|
|
return response.json()
|
|
except requests.exceptions.RequestException as e:
|
|
print(f"API Error: {str(e)}")
|
|
return None
|
|
|
|
def get_universes(self):
|
|
return self._make_request('GET', 'universes')
|
|
|
|
def create_universe(self, name, description):
|
|
return self._make_request('POST', 'universes', {'name': name, 'description': description})
|
|
|
|
def get_projects(self):
|
|
return self._make_request('GET', 'projects')
|
|
|
|
def create_project(self, name, universe_id):
|
|
return self._make_request('POST', 'projects', {'name': name, 'universe_id': universe_id})
|
|
|
|
def get_vdcs(self):
|
|
return self._make_request('GET', 'vdcs')
|
|
|
|
def create_vdc(self, name, project_id):
|
|
return self._make_request('POST', 'vdcs', {'name': name, 'project_id': project_id})
|
|
|
|
def get_networks(self):
|
|
return self._make_request('GET', 'networks')
|
|
|
|
def create_network(self, name, vdc_id):
|
|
return self._make_request('POST', 'networks', {'name': name, 'vdc_id': vdc_id})
|
|
|
|
def get_network_ports_by_network(self,network_id):
|
|
return self._make_request('GET', f'network_ports/by_network/{network_id}')
|
|
|
|
def get_regions(self):
|
|
return self._make_request('GET', 'regions')
|
|
|
|
def create_region(self, name, description):
|
|
return self._make_request('POST', 'regions', {'name': name, 'description': description})
|
|
|
|
def get_region_access(self, region_id):
|
|
return self._make_request('GET', f'region_access/by_region/{region_id}')
|
|
|
|
def get_workload_hosts(self):
|
|
return self._make_request('GET', 'workload_hosts')
|
|
|
|
def get_workload_host(self,workload_host_id):
|
|
return self._make_request('GET', f'workload_hosts/{workload_host_id}')
|
|
|
|
def get_images(self):
|
|
return self._make_request('GET', 'images')
|
|
|
|
def get_image(self,image_id):
|
|
return self._make_request('GET', f'images/{image_id}')
|
|
|
|
def edit_image(self,image_id,data):
|
|
return self._make_request('PUT', f'images/{image_id}',data)
|
|
|
|
def create_image(self, data):
|
|
# Make the API request
|
|
return self._make_request('POST', 'images', data)
|
|
|
|
|
|
|
|
|
|
def get_containers(self):
|
|
return self._make_request('GET', 'workloads/containers')
|
|
|
|
def get_container(self,container_id):
|
|
return self._make_request('GET', f'workloads/containers/{container_id}')
|
|
|
|
def edit_container(self,container_id,data):
|
|
return self._make_request('PUT', f'workloads/containers/{container_id}',data)
|
|
|
|
def create_container(self, data):
|
|
# Make the API request
|
|
return self._make_request('POST', 'workloads/containers', data)
|
|
|
|
def delete_container(self, container_id):
|
|
# Make the API request
|
|
return self._make_request('DELETE', f'workloads/containers/{container_id}')
|
|
|
|
|
|
|