fix: changed the algorithm/approach of the SSH key path removal method for 'RemoteNode'
This commit is contained in:
54
anodes.py
54
anodes.py
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user