Compare commits

...

3 Commits

2 changed files with 65 additions and 7 deletions

View File

@@ -176,7 +176,7 @@ class RemoteNode:
self.__keys_selected = False self.__keys_selected = False
self.__finalized_keys = False self.__finalized_keys = False
self.model: dict | None = None self.model: dict | None = None
self.__accumulator = None self.__key_accumulator: tuple | list | None = []
def set_region(self, name: Literal["us-east"] = "us-east") -> None: def set_region(self, name: Literal["us-east"] = "us-east") -> None:
self.region = name self.region = name
@@ -359,9 +359,55 @@ class RemoteNode:
self.__finalized_keys = self.__keys_selected and self.__authkeys_selected and self.__usedkeys_selected self.__finalized_keys = self.__keys_selected and self.__authkeys_selected and self.__usedkeys_selected
return result return result
# @TODO rewrite below method # @TODO continue writing below method
def remove_keys(self, source: Literal["authorized", "used", "available", "selected"] = "available", *selections: int | ExecutedPath | str) -> list[ExecutedPath] | Never: def remove_keys(self, target: Literal["authorized", "used", "available", "selected"] = "available", *selections: int | str | ExecutedPath):
raise NotImplementedError keyfiles = self.ssh.keys[target]
key_accumulator_populated = (slf.__key_accumulator is not None and isinstance(slf.__key_accumulator, (tuple, list)) and len(slf.__key_accumulator) > 0)
for s in selections:
if isinstance(s, int):
if target == "available":
self.__key_accumulator.append(list(keyfiles).pop(s))
else:
self.__key_accumulator.append(keyfiles.pop(s))
elif isinstance(s, (str, ExecutedPath)):
if isinstance(s, str):
removed_keyfiles = list(filter(lambda p: str(p) == s, keyfiles))
else:
removed_keyfiles = list(filter(lambda p: p == s, keyfiles))
keyfiles = filter(lambda p: str(p) != s, keyfiles)
self.__key_accumulator += removed_keyfiles
self.ssh.keys[target] = keyfiles
if target == "available":
selected_diff = list(set(self.ssh.keys["selected"]) - set(self.__key_accumulator))
self.ssh.keys["selected"] = selected_diff if len(selected_diff) >= 2 else [0, 1]
auth_diff = list(set(self.ssh.keys["authorized"]) - set(self.__key_accumulator))
self.ssh.keys["authorized"] = auth_diff
used_diff = list(set(self.ssh.keys["used"]) - set(self.__key_accumulator))
self.ssh.keys["used"] = used_diff
elif target == "selected":
available_diff = list(set(self.ssh.keys["available"]) - set(self.__key_accumulator))
self.ssh.keys["available"] = available_diff if len(available_diff) >= 2 else [0, 1]
auth_diff = list(set(self.ssh.keys["authorized"]) - set(self.__key_accumulator))
self.ssh.keys["authorized"] = auth_diff
used_diff = list(set(self.ssh.keys["used"]) - set(self.__key_accumulator))
self.ssh.keys["used"] = used_diff
elif target == "authorized":
available_diff = list(set(self.ssh.keys["available"]) - set(self.__key_accumulator))
self.ssh.keys["available"] = available_diff if len(available_diff) >= 2 else [0, 1]
selected_diff = list(set(self.ssh.keys["selected"]) - set(self.__key_accumulator))
self.ssh.keys["selected"] = selected_diff
used_diff = list(set(self.ssh.keys["used"]) - set(self.__key_accumulator))
self.ssh.keys["used"] = used_diff
elif target == "used":
available_diff = list(set(self.ssh.keys["available"]) - set(self.__key_accumulator))
self.ssh.keys["available"] = available_diff if len(available_diff) >= 2 else [0, 1]
selected_diff = list(set(self.ssh.keys["selected"]) - set(self.__key_accumulator))
self.ssh.keys["selected"] = selected_diff
auth_diff = list(set(self.ssh.keys["used"]) - set(self.__key_accumulator))
self.ssh.keys["authorized"] = auth_diff
def itemize(self): def itemize(self):
model: dict | vpsSchema = dict() model: dict | vpsSchema = dict()

View File

@@ -23,7 +23,7 @@ class Config:
filepath = Path(parent_dir) / filepath filepath = Path(parent_dir) / filepath
filename: str = filepath.stem filename: str = filepath.stem
self.parse_method = "yml" self.parse_method = "YML"
if "." in filename: if "." in filename:
filename_arr = filename.split(".") filename_arr = filename.split(".")
basename: str = filename_arr[0] basename: str = filename_arr[0]
@@ -45,7 +45,13 @@ class Config:
self.file = open(str(self.filepath), self.mode) self.file = open(str(self.filepath), self.mode)
model = self.file.read() model = self.file.read()
self.model = yams.load(model)
if self.parse_method == "INI":
raise NotImplementedError
elif self.parse_method == "TOML":
raise NotImplementedError
else:
self.model = yams.load(model)
if self.scope == AnsibleScopes.GROUPVARS.name or self.scope == AnsibleScopes.HOSTVARS.name: if self.scope == AnsibleScopes.GROUPVARS.name or self.scope == AnsibleScopes.HOSTVARS.name:
api_key: str = model["vps_service"]["api_key"] api_key: str = model["vps_service"]["api_key"]
@@ -86,6 +92,12 @@ class Config:
else: else:
raise ValueError raise ValueError
file_model = yams.dump(self.model | ansible_chunk) if self.parse_method == "INI":
raise NotImplementedError
elif self.parse_method == "TOML":
raise NotImplementedError
else:
file_model = yams.dump(self.model | ansible_chunk)
self.file.write(file_model) self.file.write(file_model)
self.file.close() self.file.close()