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):
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):
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.logger.logging import get_logger
from colony.settings import configuration
from colony.transport.whisperer import Whisperer
from colony.utils.network import get_local_ip, get_hostname
@@ -26,24 +27,6 @@ class Network:
if not self.nodes:
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):
return self.self_node
@@ -72,6 +55,13 @@ class Network:
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"):
self.logger.info(f"Loading network snapshot from {file_path}")
nodes = []
+1 -8
View File
@@ -17,14 +17,7 @@ class Node:
def execute(self, command: Enum, *args, **kwargs):
request = CommandRequest.form(command, *args, **kwargs)
return Whisperer(self.ip, self.port).send({
"command": {
"role": request.role,
"name": request.name,
"args": request.args,
"kwargs": request.kwargs
}
})
return Whisperer(self.ip, self.port).send(request.collapse())
def to_dict(self):
return {
+9
View File
@@ -31,3 +31,12 @@ class CommandRequest:
def form(cls, id: Enum, *args: Any, **kwargs: Any):
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
from enum import Enum
from colony.core.network.requests import CommandRequest
from colony.core.storage import DEFAULT_STORAGE_FILES
from colony.roles.role import Role
from colony.roles.unit.role import Unit
from colony.roles.vaultwarden.role import VaultWarden
from colony.core.roles.role import Role
from colony.core.roles.unit.role import Unit
from colony.core.roles.vaultwarden.role import VaultWarden
from colony.transport.discover import Discover
from colony.transport.whisperer import Whisperer
@@ -68,15 +69,4 @@ class Explorer(Role):
return peers
def fetch_stats_from_peer(self, ip, port):
command = 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', {})
return self.context.execute_to_unregistered_node(ip, port, Unit.COMMANDS.SHOW_STATS)
File renamed without changes.
@@ -1,6 +1,6 @@
from enum import Enum
from colony.roles.role import Role, Command
from colony.roles.unit.role import Unit
from colony.core.roles.role import Role
from colony.core.roles.unit.role import Unit
class Foreman(Role):
@@ -52,7 +52,7 @@ class RoleManager:
context = RoleContext(self.network, self)
for role_name in roles_to_add:
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)
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 colony.core.network.hardware import HardwareStatistics
from colony.roles.role import Role, Command
from colony.core.roles.role import Role, Command
class Unit(Role):
@@ -1,7 +1,7 @@
from enum import Enum
from colony.core.storage import DefaultStorage
from colony.roles.role import Role, Command
from colony.core.roles.role import Role, Command
class VaultWarden(Role):
+1 -1
View File
@@ -2,10 +2,10 @@ import threading
from colony.core.network.core import Network
from colony.core.dispatcher import Dispatcher
from colony.core.roles.manager import RoleManager
from colony.core.state_manager import StateManager
from colony.core.storage import DefaultStorage
from colony.role_registry import RoleRegistry
from colony.roles.manager import RoleManager
from colony.transport.discover import Discover
from colony.transport.listener import Listener
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.roles.explorer.role import Explorer
from colony.roles.foreman.role import Foreman
from colony.roles.unit.role import Unit
from colony.roles.vaultwarden.role import VaultWarden
from colony.core.roles.foreman.role import Foreman
from colony.core.roles.vaultwarden.role import VaultWarden
available_roles = [
RoleStats(