Unverified Commit 35ca047f authored by Jakob Görgen's avatar Jakob Görgen
Browse files

symphony/client: added resource group client

parent 733acead
...@@ -368,6 +368,25 @@ class SimBricksClient: ...@@ -368,6 +368,25 @@ class SimBricksClient:
return await resp.json() return await resp.json()
class ResourceGroupClient:
def __init__(self, ns_client) -> None:
self._ns_client: NSClient = ns_client
async def create_rg(self, label: str, available_cores: int, available_memory: int) -> dict:
obj = {"label": label, "available_cores": available_cores, "available_memory": available_memory}
async with self._ns_client.post(url="/resource_group", json=obj) as resp:
return await resp.json()
async def get_rg(self, rg_id: int) -> dict:
async with self._ns_client.get(url=f"/resource_group/{rg_id}") as resp:
return await resp.json()
async def filter_get_rg(self) -> dict: # TODO: add filtering object...
async with self._ns_client.get(url=f"/resource_group") as resp:
return await resp.json()
class RunnerClient: class RunnerClient:
def __init__(self, ns_client, id: int) -> None: def __init__(self, ns_client, id: int) -> None:
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from .client import BaseClient, AdminClient, NSClient, SimBricksClient, RunnerClient from .client import BaseClient, AdminClient, NSClient, SimBricksClient, RunnerClient, ResourceGroupClient
from .settings import client_settings from .settings import client_settings
...@@ -33,36 +33,43 @@ class ClientProvider: ...@@ -33,36 +33,43 @@ class ClientProvider:
self._ns_client: NSClient | None = None self._ns_client: NSClient | None = None
self._simbricks_client: SimBricksClient | None = None self._simbricks_client: SimBricksClient | None = None
self._runner_client: RunnerClient | None = None self._runner_client: RunnerClient | None = None
self._resource_group_client: ResourceGroupClient | None = None
@property @property
def base_client(self): def base_client(self) -> BaseClient:
if self._base_client is None: if self._base_client is None:
self._base_client = BaseClient() self._base_client = BaseClient()
return self._base_client return self._base_client
@property @property
def admin_client(self): def admin_client(self) -> AdminClient:
if self._admin_client is None: if self._admin_client is None:
self._admin_client = AdminClient(base_client=self.base_client) self._admin_client = AdminClient(base_client=self.base_client)
return self._admin_client return self._admin_client
@property @property
def ns_client(self): def ns_client(self) -> NSClient:
if self._ns_client is None: if self._ns_client is None:
self._ns_client = NSClient(base_client=self.base_client, namespace=self.namespace) self._ns_client = NSClient(base_client=self.base_client, namespace=self.namespace)
return self._ns_client return self._ns_client
@property @property
def simbricks_client(self): def simbricks_client(self) -> SimBricksClient:
if self._simbricks_client is None: if self._simbricks_client is None:
self._simbricks_client = SimBricksClient(self.ns_client) self._simbricks_client = SimBricksClient(self.ns_client)
return self._simbricks_client return self._simbricks_client
@property @property
def runner_client(self): def runner_client(self) -> RunnerClient:
if self._runner_client is None: if self._runner_client is None:
self._runner_client = RunnerClient(self.ns_client, id=self.runner_id) self._runner_client = RunnerClient(self.ns_client, id=self.runner_id)
return self._runner_client return self._runner_client
@property
def resource_group_client(self) -> ResourceGroupClient:
if self._resource_group_client is None:
self._resource_group_client = ResourceGroupClient(self.ns_client)
return self._resource_group_client
client_provider = ClientProvider() client_provider = ClientProvider()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment