Island: Refactor IslandModeService to use ISimulationRepository
This commit is contained in:
parent
942e97cf18
commit
bdc5b8fa7b
|
@ -2,3 +2,4 @@ from .authentication.authentication_service import AuthenticationService
|
||||||
from .authentication.json_file_user_datastore import JsonFileUserDatastore
|
from .authentication.json_file_user_datastore import JsonFileUserDatastore
|
||||||
|
|
||||||
from .aws import AWSService
|
from .aws import AWSService
|
||||||
|
from .mode.island_mode_service import IslandModeService
|
||||||
|
|
|
@ -17,7 +17,7 @@ from monkey_island.cc.repository import (
|
||||||
RetrievalError,
|
RetrievalError,
|
||||||
)
|
)
|
||||||
from monkey_island.cc.server_utils.consts import MONKEY_ISLAND_ABS_PATH
|
from monkey_island.cc.server_utils.consts import MONKEY_ISLAND_ABS_PATH
|
||||||
from monkey_island.cc.services import AWSService
|
from monkey_island.cc.services import AWSService, IslandModeService
|
||||||
from monkey_island.cc.services.post_breach_files import PostBreachFilesService
|
from monkey_island.cc.services.post_breach_files import PostBreachFilesService
|
||||||
from monkey_island.cc.services.run_local_monkey import LocalMonkeyRunService
|
from monkey_island.cc.services.run_local_monkey import LocalMonkeyRunService
|
||||||
|
|
||||||
|
@ -41,14 +41,16 @@ def initialize_services(data_dir: Path) -> DIContainer:
|
||||||
container.register_instance(
|
container.register_instance(
|
||||||
IFileRepository, LocalStorageFileRepository(data_dir / "runtime_data")
|
IFileRepository, LocalStorageFileRepository(data_dir / "runtime_data")
|
||||||
)
|
)
|
||||||
container.register_instance(AWSService, container.resolve(AWSService))
|
|
||||||
container.register_instance(IAgentBinaryRepository, _build_agent_binary_repository())
|
container.register_instance(IAgentBinaryRepository, _build_agent_binary_repository())
|
||||||
container.register_instance(LocalMonkeyRunService, container.resolve(LocalMonkeyRunService))
|
|
||||||
container.register_instance(
|
container.register_instance(
|
||||||
IAgentConfigurationRepository, container.resolve(FileAgentConfigurationRepository)
|
IAgentConfigurationRepository, container.resolve(FileAgentConfigurationRepository)
|
||||||
)
|
)
|
||||||
container.register_instance(ISimulationRepository, container.resolve(FileSimulationRepository))
|
container.register_instance(ISimulationRepository, container.resolve(FileSimulationRepository))
|
||||||
|
|
||||||
|
container.register_instance(AWSService, container.resolve(AWSService))
|
||||||
|
container.register_instance(LocalMonkeyRunService, container.resolve(LocalMonkeyRunService))
|
||||||
|
container.register_instance(IslandModeService, container.resolve(IslandModeService))
|
||||||
|
|
||||||
# This is temporary until we get DI all worked out.
|
# This is temporary until we get DI all worked out.
|
||||||
PostBreachFilesService.initialize(container.resolve(IFileRepository))
|
PostBreachFilesService.initialize(container.resolve(IFileRepository))
|
||||||
AuthenticationService.initialize(data_dir, JsonFileUserDatastore(data_dir))
|
AuthenticationService.initialize(data_dir, JsonFileUserDatastore(data_dir))
|
||||||
|
|
|
@ -1,17 +1,25 @@
|
||||||
from monkey_island.cc.models.island_mode_model import IslandMode
|
from monkey_island.cc.repository import ISimulationRepository
|
||||||
from monkey_island.cc.services.mode.mode_enum import IslandModeEnum
|
from monkey_island.cc.services.mode.mode_enum import IslandModeEnum
|
||||||
|
|
||||||
|
|
||||||
def set_mode(mode: IslandModeEnum):
|
class IslandModeService:
|
||||||
IslandMode.drop_collection()
|
def __init__(self, simulation_repository: ISimulationRepository):
|
||||||
island_mode_model = IslandMode()
|
self._simulation_repository = simulation_repository
|
||||||
island_mode_model.mode = mode.value
|
|
||||||
island_mode_model.save()
|
|
||||||
|
|
||||||
|
def get_mode(self):
|
||||||
|
"""
|
||||||
|
Get's the island's current mode
|
||||||
|
|
||||||
def get_mode() -> str:
|
:return The island's current mode
|
||||||
if IslandMode.objects:
|
:raises RetrievalError: If the mode could not be retrieved
|
||||||
mode = IslandMode.objects[0].mode
|
"""
|
||||||
return mode
|
return self._simulation_repository.get_mode()
|
||||||
else:
|
|
||||||
return IslandModeEnum.UNSET.value
|
def set_mode(self, mode: IslandModeEnum):
|
||||||
|
"""
|
||||||
|
Set the island's mode
|
||||||
|
|
||||||
|
:param mode: The island's new mode
|
||||||
|
:raises StorageError: If the mode could not be saved
|
||||||
|
"""
|
||||||
|
self._simulation_repository.set_mode(mode)
|
||||||
|
|
Loading…
Reference in New Issue