From e458ecc0c14eb0375332fd9a41c980f5fdb370fa Mon Sep 17 00:00:00 2001 From: Emilia Allison Date: Mon, 12 Feb 2024 13:19:03 -0500 Subject: [PATCH] create resource nest --- adg_control.py | 15 +++++++++++++++ cache.py | 1 + main.py | 5 ++++- parser.py | 25 ++++++++++++++++++++++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/adg_control.py b/adg_control.py index b698eb9..e56cf3e 100644 --- a/adg_control.py +++ b/adg_control.py @@ -152,6 +152,21 @@ class AdgClient: raise Exception("Failed to create deadock resolver", res.stdout, res.args) + def create_resource_nest(self, name: str, child_nest_name: str, location: int, envelope: int, system: str = ""): + if not system: + system = self.system_name + + res = self._run(["crn", + "-s", f"{system}", + "-n", f"{name}", + "-c", f"{child_nest_name}", + "-l", f"{location}", + "-e", f"{envelope}"]) + + if res.returncode > 0: + raise Exception("Failed to create resource nest", + res.stdout, res.args) + def _create_unique_database_name(self, prefix: str) -> str: MAX_ATTEMPTS = 100 databases = self.get_databases() diff --git a/cache.py b/cache.py index bc13602..7917e3f 100644 --- a/cache.py +++ b/cache.py @@ -15,6 +15,7 @@ class Cache: if name in self._cache: return path.abspath(path.join(self.dir, self._cache[name])) + print(f"Trying to fetch driver: {name}") try: driver = fetch.get_driver_by_exact_name(name) file = fetch.download_driver(driver, self.dir) diff --git a/main.py b/main.py index ff2e537..c3a99f3 100644 --- a/main.py +++ b/main.py @@ -1,14 +1,17 @@ from adg_control import AdgClient, ADG_EXE, ADG_DIR from parser import Parser from cache import Cache +from sys import argv def main(): - parser = Parser("./test") + print(argv[1]) + parser = Parser(argv[1]) client = AdgClient(ADG_EXE, ADG_DIR) cache = Cache() for command in parser.commands: + print(command.type) command.execute(client, cache) diff --git a/parser.py b/parser.py index 4d10b1d..7fd9988 100644 --- a/parser.py +++ b/parser.py @@ -10,7 +10,8 @@ class CommandType(StrEnum): NORMAL = auto(), NEWSYSTEM = auto(), HOTEL = auto(), - DEADLOCK = auto() + DEADLOCK = auto(), + RESOURCENEST = auto(), class Command(): @@ -28,6 +29,8 @@ class Command(): self._init_hotel(**kwargs) elif self.type == CommandType.DEADLOCK: self._init_deadlock(**kwargs) + elif self.type == CommandType.RESOURCENEST: + self._init_resourcenest(**kwargs) except KeyError as e: raise Exception("Required argument not found!", e) @@ -43,6 +46,8 @@ class Command(): self._execute_hotel(client, cache) case CommandType.DEADLOCK: self._execute_deadlock(client, cache) + case CommandType.RESOURCENEST: + self._execute_resourcenest(client, cache) def _init_newdb(self, **kwargs): self.name = kwargs["name"] @@ -99,6 +104,15 @@ class Command(): if "host_name" in kwargs: self.host_name = kwargs["host_name"] + def _init_resourcenest(self, **kwargs): + print(kwargs) + self.name = kwargs["name"] + self.child_nest_name = kwargs["child_nest_name"] + self.location = kwargs["location"] + self.envelope = kwargs["envelope"] + if "system" in kwargs: + self.system = kwargs["system"] + def _execute_newdb(self, client: AdgClient, cache: Cache): client.create_database(self.name) @@ -150,6 +164,15 @@ class Command(): system=self.system if hasattr(self, "system") else "" ) + def _execute_resourcenest(self, client: AdgClient, cache: Cache): + client.create_resource_nest( + self.name, + self.child_nest_name, + self.location, + self.envelope, + system=self.system if hasattr(self, "system") else "" + ) + class Parser(): def __init__(self, path: str):