Add placeholder actions
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -9,7 +9,7 @@ from typing import Dict, Optional
|
|||||||
from prettytable import MARKDOWN, PrettyTable
|
from prettytable import MARKDOWN, PrettyTable
|
||||||
|
|
||||||
from primaite import getLogger
|
from primaite import getLogger
|
||||||
from primaite.simulator.core import SimComponent
|
from primaite.simulator.core import Action, ActionManager, SimComponent
|
||||||
from primaite.simulator.file_system.file_type import FileType, get_file_type_from_extension
|
from primaite.simulator.file_system.file_type import FileType, get_file_type_from_extension
|
||||||
from primaite.simulator.system.core.sys_log import SysLog
|
from primaite.simulator.system.core.sys_log import SysLog
|
||||||
|
|
||||||
@@ -94,6 +94,17 @@ class FileSystem(SimComponent):
|
|||||||
if not self.folders:
|
if not self.folders:
|
||||||
self.create_folder("root")
|
self.create_folder("root")
|
||||||
|
|
||||||
|
def _init_action_manager(self) -> ActionManager:
|
||||||
|
am = super()._init_action_manager()
|
||||||
|
|
||||||
|
self._folder_action_manager = ActionManager()
|
||||||
|
am.add_action("folder", Action(func=self._folder_action_manager))
|
||||||
|
|
||||||
|
self._file_action_manager = ActionManager()
|
||||||
|
am.add_action("file", Action(func=self._file_action_manager))
|
||||||
|
|
||||||
|
return am
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def size(self) -> int:
|
def size(self) -> int:
|
||||||
"""
|
"""
|
||||||
@@ -154,6 +165,7 @@ class FileSystem(SimComponent):
|
|||||||
self.folders[folder.uuid] = folder
|
self.folders[folder.uuid] = folder
|
||||||
self._folders_by_name[folder.name] = folder
|
self._folders_by_name[folder.name] = folder
|
||||||
self.sys_log.info(f"Created folder /{folder.name}")
|
self.sys_log.info(f"Created folder /{folder.name}")
|
||||||
|
self._folder_action_manager.add_action(folder.uuid, Action(func=folder._action_manager))
|
||||||
return folder
|
return folder
|
||||||
|
|
||||||
def delete_folder(self, folder_name: str):
|
def delete_folder(self, folder_name: str):
|
||||||
@@ -172,6 +184,7 @@ class FileSystem(SimComponent):
|
|||||||
self.folders.pop(folder.uuid)
|
self.folders.pop(folder.uuid)
|
||||||
self._folders_by_name.pop(folder.name)
|
self._folders_by_name.pop(folder.name)
|
||||||
self.sys_log.info(f"Deleted folder /{folder.name} and its contents")
|
self.sys_log.info(f"Deleted folder /{folder.name} and its contents")
|
||||||
|
self._folder_action_manager.remove_action(folder.uuid)
|
||||||
else:
|
else:
|
||||||
_LOGGER.debug(f"Cannot delete folder as it does not exist: {folder_name}")
|
_LOGGER.debug(f"Cannot delete folder as it does not exist: {folder_name}")
|
||||||
|
|
||||||
@@ -213,6 +226,7 @@ class FileSystem(SimComponent):
|
|||||||
)
|
)
|
||||||
folder.add_file(file)
|
folder.add_file(file)
|
||||||
self.sys_log.info(f"Created file /{file.path}")
|
self.sys_log.info(f"Created file /{file.path}")
|
||||||
|
self._file_action_manager.add_action(file.uuid, Action(func=file._action_manager))
|
||||||
return file
|
return file
|
||||||
|
|
||||||
def get_file(self, folder_name: str, file_name: str) -> Optional[File]:
|
def get_file(self, folder_name: str, file_name: str) -> Optional[File]:
|
||||||
@@ -240,6 +254,7 @@ class FileSystem(SimComponent):
|
|||||||
file = folder.get_file(file_name)
|
file = folder.get_file(file_name)
|
||||||
if file:
|
if file:
|
||||||
folder.remove_file(file)
|
folder.remove_file(file)
|
||||||
|
self._file_action_manager.remove_action(file.uuid)
|
||||||
self.sys_log.info(f"Deleted file /{file.path}")
|
self.sys_log.info(f"Deleted file /{file.path}")
|
||||||
|
|
||||||
def move_file(self, src_folder_name: str, src_file_name: str, dst_folder_name: str):
|
def move_file(self, src_folder_name: str, src_file_name: str, dst_folder_name: str):
|
||||||
@@ -317,6 +332,16 @@ class Folder(FileSystemItemABC):
|
|||||||
is_quarantined: bool = False
|
is_quarantined: bool = False
|
||||||
"Flag that marks the folder as quarantined if true."
|
"Flag that marks the folder as quarantined if true."
|
||||||
|
|
||||||
|
def _init_action_manager(sekf) -> ActionManager:
|
||||||
|
am = super()._init_action_manager()
|
||||||
|
|
||||||
|
am.add_action("scan", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("checkhash", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("repair", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("restore", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
|
||||||
|
return am
|
||||||
|
|
||||||
def describe_state(self) -> Dict:
|
def describe_state(self) -> Dict:
|
||||||
"""
|
"""
|
||||||
Produce a dictionary describing the current state of this object.
|
Produce a dictionary describing the current state of this object.
|
||||||
@@ -482,6 +507,17 @@ class File(FileSystemItemABC):
|
|||||||
with open(self.sim_path, mode="a"):
|
with open(self.sim_path, mode="a"):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def _init_action_manager(self) -> ActionManager:
|
||||||
|
am = super()._init_action_manager()
|
||||||
|
|
||||||
|
am.add_action("scan", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("checkhash", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("delete", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("repair", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
am.add_action("restore", Action(func=lambda request, context: ...)) # TODO implement action
|
||||||
|
|
||||||
|
return am
|
||||||
|
|
||||||
def make_copy(self, dst_folder: Folder) -> File:
|
def make_copy(self, dst_folder: Folder) -> File:
|
||||||
"""
|
"""
|
||||||
Create a copy of the current File object in the given destination folder.
|
Create a copy of the current File object in the given destination folder.
|
||||||
|
|||||||
@@ -951,15 +951,23 @@ class Node(SimComponent):
|
|||||||
# since there are potentially many services, create an action manager that can map service name
|
# since there are potentially many services, create an action manager that can map service name
|
||||||
self._service_action_manager = ActionManager()
|
self._service_action_manager = ActionManager()
|
||||||
am.add_action("service", Action(func=self._service_action_manager))
|
am.add_action("service", Action(func=self._service_action_manager))
|
||||||
self._process_action_manager = ActionManager()
|
|
||||||
am.add_action("process", Action(func=self._process_action_manager))
|
|
||||||
self._application_action_manager = ActionManager()
|
|
||||||
am.add_action("application", Action(func=self._application_action_manager))
|
|
||||||
self._nic_action_manager = ActionManager()
|
self._nic_action_manager = ActionManager()
|
||||||
am.add_action("nic", Action(func=self._nic_action_manager))
|
am.add_action("nic", Action(func=self._nic_action_manager))
|
||||||
|
|
||||||
am.add_action("file_system", Action(func=self.file_system._action_manager))
|
am.add_action("file_system", Action(func=self.file_system._action_manager))
|
||||||
|
|
||||||
|
# currently we don't have any applications nor processes, so these will be empty
|
||||||
|
self._process_action_manager = ActionManager()
|
||||||
|
am.add_action("process", Action(func=self._process_action_manager))
|
||||||
|
self._application_action_manager = ActionManager()
|
||||||
|
am.add_action("application", Action(func=self._application_action_manager))
|
||||||
|
|
||||||
|
am.add_action("scan", Action(func=lambda request, context: ...)) # TODO implement OS scan
|
||||||
|
|
||||||
|
am.add_action("shutdown", Action(func=lambda request, context: self.power_off()))
|
||||||
|
am.add_action("startup", Action(func=lambda request, context: self.power_on()))
|
||||||
|
am.add_action("reset", Action(func=lambda request, context: ...)) # TODO implement node reset
|
||||||
|
|
||||||
return am
|
return am
|
||||||
|
|
||||||
def describe_state(self) -> Dict:
|
def describe_state(self) -> Dict:
|
||||||
|
|||||||
Reference in New Issue
Block a user