diff --git a/packages/syft/src/syft/service/network/network_service.py b/packages/syft/src/syft/service/network/network_service.py index ebd183f0fb2..622316fa606 100644 --- a/packages/syft/src/syft/service/network/network_service.py +++ b/packages/syft/src/syft/service/network/network_service.py @@ -123,31 +123,6 @@ def create_or_update_peer( result = self.set(credentials, peer) return result - def update_peer_ping_status( - self, - credentials: SyftVerifyKey, - peer: NodePeer, - has_permission: bool = False, - ) -> SyftSuccess | SyftError: - """ - Get the existing peer from the store, then only update its ping status related fields - """ - # get the node peer for the given sender peer_id - result = self.get_by_uid(credentials=credentials, uid=peer.id) - if result.is_err(): - return Err( - f"Failed to query peer peer {peer.id} with name '{peer.name}' from stash. Err: {result.err()}" - ) - existing = result.ok() - if existing is None: - return Err( - f"Failed to query peer {peer.id} with name '{peer.name}' from stash: peer is None" - ) - existing.ping_status = peer.ping_status - existing.ping_status_message = peer.ping_status_message - existing.pinged_timestamp = peer.pinged_timestamp - return super().update(credentials, existing, has_permission=has_permission) - def get_by_verify_key( self, credentials: SyftVerifyKey, verify_key: SyftVerifyKey ) -> Result[NodePeer | None, SyftError]: @@ -173,8 +148,6 @@ def __init__(self, store: DocumentStore) -> None: self.store = store self.stash = NetworkStash(store=store) - # TODO: Check with MADHAVA, can we even allow guest user to introduce routes to - # domain nodes? @service_method( path="network.exchange_credentials_with", name="exchange_credentials_with", diff --git a/packages/syft/src/syft/service/network/node_peer.py b/packages/syft/src/syft/service/network/node_peer.py index d28c14d693b..db7b5366973 100644 --- a/packages/syft/src/syft/service/network/node_peer.py +++ b/packages/syft/src/syft/service/network/node_peer.py @@ -325,6 +325,7 @@ class NodePeerUpdate(PartialSyftObject): __canonical_name__ = "NodePeerUpdate" __version__ = SYFT_OBJECT_VERSION_1 + id: UID name: str node_routes: list[NodeRouteType] admin_email: str diff --git a/packages/syft/src/syft/service/network/utils.py b/packages/syft/src/syft/service/network/utils.py index c42b35a5f6b..4f658475dc3 100644 --- a/packages/syft/src/syft/service/network/utils.py +++ b/packages/syft/src/syft/service/network/utils.py @@ -15,6 +15,7 @@ from .network_service import NodePeerAssociationStatus from .node_peer import NodePeer from .node_peer import NodePeerConnectionStatus +from .node_peer import NodePeerUpdate @serializable(without=["thread"]) @@ -51,20 +52,22 @@ def peer_route_heathcheck(self, context: AuthedServiceContext) -> SyftError | No all_peers: list[NodePeer] = result.ok() for peer in all_peers: - peer.pinged_timestamp = DateTime.now() + peer_update = NodePeerUpdate(id=peer.id) + peer_update.pinged_timestamp = DateTime.now() try: peer_client = peer.client_with_context(context=context) if peer_client.is_err(): logger.error( f"Failed to create client for peer: {peer}: {peer_client.err()}" ) - peer.ping_status = NodePeerConnectionStatus.TIMEOUT + peer_update.ping_status = NodePeerConnectionStatus.TIMEOUT peer_client = None except Exception as e: logger.error( f"Failed to create client for peer: {peer} with exception {e}" ) - peer.ping_status = NodePeerConnectionStatus.TIMEOUT + + peer_update.ping_status = NodePeerConnectionStatus.TIMEOUT peer_client = None if peer_client is not None: @@ -72,21 +75,24 @@ def peer_route_heathcheck(self, context: AuthedServiceContext) -> SyftError | No peer_status = peer_client.api.services.network.check_peer_association( peer_id=context.node.id ) - peer.ping_status = ( + peer_update.ping_status = ( NodePeerConnectionStatus.ACTIVE if peer_status == NodePeerAssociationStatus.PEER_ASSOCIATED else NodePeerConnectionStatus.INACTIVE ) if isinstance(peer_status, SyftError): - peer.ping_status_message = ( + peer_update.ping_status_message = ( f"Error `{peer_status.message}` when pinging peer '{peer.name}'" ) else: - peer.ping_status_message = f"Peer '{peer.name}''s ping status: {peer.ping_status.value.lower()}" + peer_update.ping_status_message = ( + f"Peer '{peer.name}''s ping status: " + f"{peer_update.ping_status.value.lower()}" + ) - result = network_stash.update_peer_ping_status( + result = network_stash.update( credentials=context.node.verify_key, - peer=peer, + peer=peer_update, has_permission=True, )