This commit is contained in:
ciomek committed 2026-01-27 22:26:03 +01:00
1 parent f74da858ed
commit e8731bf370
18 files changed
+42 -51

No files matched your search

Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
+3
View File
@@ -9,6 +9,9 @@ class RoleContext:
def execute(self, command, *args, **kwargs): def execute(self, command, *args, **kwargs):
return self._network.execute(command, *args, **kwargs) return self._network.execute(command, *args, **kwargs)
def execute_to_unregistered_node(self, ip, port, command, *args, **kwargs):
return self._network.execute_to_unregistered_node(ip, port, command, *args, **kwargs)
def peers(self): def peers(self):
return self._network.get_all_nodes() return self._network.get_all_nodes()
+8 -18
View File
@@ -6,6 +6,7 @@ from colony.core.network.nodes import LocalNode, Node
from colony.core.network.requests import CommandRequest from colony.core.network.requests import CommandRequest
from colony.core.logger.logging import get_logger from colony.core.logger.logging import get_logger
from colony.settings import configuration from colony.settings import configuration
from colony.transport.whisperer import Whisperer
from colony.utils.network import get_local_ip, get_hostname from colony.utils.network import get_local_ip, get_hostname
@@ -26,24 +27,6 @@ class Network:
if not self.nodes: if not self.nodes:
self.nodes.append(self.self_node) self.nodes.append(self.self_node)
# @staticmethod
# def initialize():
# network = Network()
# network.logger.info("Network.initialize() called")
#
# network.self_node = LocalNode(
# hostname=get_hostname(),
# ip=get_local_ip(),
# roles=[],
# port=configuration.listener.port
# )
# network.logger.info(f"Self node created: {network.self_node.id}")
#
# if not network.nodes:
# network.nodes.append(network.self_node)
#
# return network
def get_self(self): def get_self(self):
return self.self_node return self.self_node
@@ -72,6 +55,13 @@ class Network:
return result return result
@staticmethod
def execute_to_unregistered_node(ip, port, command: Enum, *args, **kwargs):
request = CommandRequest.form(command, *args, **kwargs)
return Whisperer(ip, port).send(request.collapse())
def load_network_from_snapshot(self, file_path: str = "storage/colony_snapshot.json"): def load_network_from_snapshot(self, file_path: str = "storage/colony_snapshot.json"):
self.logger.info(f"Loading network snapshot from {file_path}") self.logger.info(f"Loading network snapshot from {file_path}")
nodes = [] nodes = []
+1 -8
View File
@@ -17,14 +17,7 @@ class Node:
def execute(self, command: Enum, *args, **kwargs): def execute(self, command: Enum, *args, **kwargs):
request = CommandRequest.form(command, *args, **kwargs) request = CommandRequest.form(command, *args, **kwargs)
return Whisperer(self.ip, self.port).send({ return Whisperer(self.ip, self.port).send(request.collapse())
"command": {
"role": request.role,
"name": request.name,
"args": request.args,
"kwargs": request.kwargs
}
})
def to_dict(self): def to_dict(self):
return { return {
+9
View File
@@ -31,3 +31,12 @@ class CommandRequest:
def form(cls, id: Enum, *args: Any, **kwargs: Any): def form(cls, id: Enum, *args: Any, **kwargs: Any):
return cls(id, args, kwargs) return cls(id, args, kwargs)
def collapse(self):
return {
"command": {
"role": self.role,
"name": self.name,
"args": self.args,
"kwargs": self.kwargs
}
}
File renamed without changes.
File renamed without changes.
@@ -1,10 +1,11 @@
import datetime import datetime
from enum import Enum from enum import Enum
from colony.core.network.requests import CommandRequest
from colony.core.storage import DEFAULT_STORAGE_FILES from colony.core.storage import DEFAULT_STORAGE_FILES
from colony.roles.role import Role from colony.core.roles.role import Role
from colony.roles.unit.role import Unit from colony.core.roles.unit.role import Unit
from colony.roles.vaultwarden.role import VaultWarden from colony.core.roles.vaultwarden.role import VaultWarden
from colony.transport.discover import Discover from colony.transport.discover import Discover
from colony.transport.whisperer import Whisperer from colony.transport.whisperer import Whisperer
@@ -68,15 +69,4 @@ class Explorer(Role):
return peers return peers
def fetch_stats_from_peer(self, ip, port): def fetch_stats_from_peer(self, ip, port):
command = Unit.COMMANDS.SHOW_STATS return self.context.execute_to_unregistered_node(ip, port, Unit.COMMANDS.SHOW_STATS)
role_name, command_name = command.value.split('.')
request = {
"command": {
"role": role_name,
"name": command_name,
"args": [],
"kwargs": {}
}
}
return Whisperer(ip, port).send(request).get('result', {})
File renamed without changes.
@@ -1,6 +1,6 @@
from enum import Enum from enum import Enum
from colony.roles.role import Role, Command from colony.core.roles.role import Role
from colony.roles.unit.role import Unit from colony.core.roles.unit.role import Unit
class Foreman(Role): class Foreman(Role):
@@ -52,7 +52,7 @@ class RoleManager:
context = RoleContext(self.network, self) context = RoleContext(self.network, self)
for role_name in roles_to_add: for role_name in roles_to_add:
self.logger.debug(f"Creating and adding new role {role_name}") self.logger.debug(f"Creating and adding new role {role_name}")
role_cls = available_roles[role_name] role_cls = self.role_registry.get_role_class_by_name(role_name)
current_roles[role_name] = role_cls(context=context) current_roles[role_name] = role_cls(context=context)
StateManager().set(StateManager.Data.Roles, list(current_roles.keys())) StateManager().set(StateManager.Data.Roles, list(current_roles.keys()))
File renamed without changes.
File renamed without changes.
@@ -1,6 +1,6 @@
from enum import Enum from enum import Enum
from colony.core.network.hardware import HardwareStatistics from colony.core.network.hardware import HardwareStatistics
from colony.roles.role import Role, Command from colony.core.roles.role import Role, Command
class Unit(Role): class Unit(Role):
@@ -1,7 +1,7 @@
from enum import Enum from enum import Enum
from colony.core.storage import DefaultStorage from colony.core.storage import DefaultStorage
from colony.roles.role import Role, Command from colony.core.roles.role import Role, Command
class VaultWarden(Role): class VaultWarden(Role):
+1 -1
View File
@@ -2,10 +2,10 @@ import threading
from colony.core.network.core import Network from colony.core.network.core import Network
from colony.core.dispatcher import Dispatcher from colony.core.dispatcher import Dispatcher
from colony.core.roles.manager import RoleManager
from colony.core.state_manager import StateManager from colony.core.state_manager import StateManager
from colony.core.storage import DefaultStorage from colony.core.storage import DefaultStorage
from colony.role_registry import RoleRegistry from colony.role_registry import RoleRegistry
from colony.roles.manager import RoleManager
from colony.transport.discover import Discover from colony.transport.discover import Discover
from colony.transport.listener import Listener from colony.transport.listener import Listener
from role_settings import available_roles from role_settings import available_roles
+4 -4
View File
@@ -1,8 +1,8 @@
from colony.core.roles.explorer.role import Explorer
from colony.core.roles.unit.role import Unit
from colony.role_registry import RoleStats, HardwarePreferences, RolePriority, HardwareType from colony.role_registry import RoleStats, HardwarePreferences, RolePriority, HardwareType
from colony.roles.explorer.role import Explorer from colony.core.roles.foreman.role import Foreman
from colony.roles.foreman.role import Foreman from colony.core.roles.vaultwarden.role import VaultWarden
from colony.roles.unit.role import Unit
from colony.roles.vaultwarden.role import VaultWarden
available_roles = [ available_roles = [
RoleStats( RoleStats(