Island: Add INetMapRepository.py and a mock entities for it

This commit is contained in:
vakarisz 2022-05-20 17:24:18 +03:00
parent f2a4be8de0
commit ec4af2cc57
3 changed files with 28 additions and 30 deletions

View File

@ -0,0 +1,17 @@
from dataclasses import dataclass
from typing import Mapping, Sequence
# This is the most concise way to represent a graph:
# Machine id as key, Arch list as a value
# Not sure how compatible this will be with ORM objects though,
# might require more complex casting logic
@dataclass
class Netmap:
nodes: Mapping[str, Sequence[Arch]]
@dataclass
class Arch:
dst_machine: Machine
status: str

View File

@ -1,30 +0,0 @@
from abc import ABC
from typing import Optional, Sequence
from monkey_island.cc.models.edge import Edge
class IEdgeRepository(ABC):
def get_all_edges(self):
pass
def get_edges(self, src_machine_id: str, dst_machine_id: str) -> Sequence[Edge]:
pass
def save_edge(self, edge: Edge):
pass
def get_by_dst(self, dst_machine_id: str) -> Sequence[Edge]:
pass
# If tunnel is None then it gets all edges, if True/False then gets only
# tunneling/non-tunneling edges
def get_by_src(self, src_machine_id: str, tunnel: Optional[bool] = None) -> Sequence[Edge]:
pass
def get_by_id(self, edge_id: str) -> Edge:
pass
# Scan telemetries might change the label once we know more about the target system
def set_label(self, edge_id: str, label: str):
pass

View File

@ -0,0 +1,11 @@
from abc import ABC
class INetMapRepository(ABC):
# TODO Define NetMap object
def get_map(self) -> NetMap:
pass
def save_netmap(self, netmap: NetMap):
pass