Module hyveos_sdk.services.apps

Classes

class AppsService (conn: grpc.aio._base_channel.Channel)
Expand source code
class AppsService:
    """
    A handle to the application management service.

    Exposes methods to interact with the application management service,
    like for deploying and stopping apps on peers in the network.
    """

    def __init__(self, conn: Channel):
        self.stub = AppsStub(conn)
        self.empty = Empty()

    async def deploy(
        self,
        image: str,
        local: bool,
        ports: Iterable[int] = [],
        peer_id: Optional[str] = None,
    ) -> str:
        """
        Deploys an application in a docker image to a peer in the network.

        Returns the ULID of the deployed application.

        To deploy to self, leave the peer_id argument empty.

        Parameters
        ----------
        image : str
            A docker image name, can contain a tag, e.g. `my-docker-image:latest`
        local : bool
            Whether the image is available locally, without needing to pull it from a registry
        ports : Iterable[int], optional
            Ports to expose on the container (default: [])
        peer_id : str, optional
            The peer_id of the target node or None to deploy to self (default: None)

        Returns
        -------
        app_id : str
            The id of the deployed application
        """

        if peer_id is not None:
            peer = Peer(peer_id=peer_id)
        else:
            peer = None

        id = await self.stub.Deploy(
            DeployAppRequest(
                app=DockerApp(image=DockerImage(name=image), ports=ports),
                local=local,
                peer=peer,
            )
        )
        return id.ulid

    async def list_running(self, peer_id: Optional[str] = None) -> Iterable[RunningApp]:
        """
        Lists the running apps on a peer in the network.

        To list the running apps on self, leave the peer_id argument empty.

        Parameters
        ----------
        peer_id : str, optional
            The peer_id of the target node or None to list apps on self (default: None)

        Returns
        -------
        app_ids : Iterable[str]
            The ids of the running applications
        """

        if peer_id is not None:
            peer = Peer(peer_id=peer_id)
        else:
            peer = None

        response = await self.stub.ListRunning(ListRunningAppsRequest(peer=peer))
        return response.apps

    async def stop(self, app_id: str, peer_id: Optional[str] = None):
        """
        Stops a running app with an ID on a peer in the network.

        To stop the running app on self, leave the peer_id argument empty.

        Parameters
        ----------
        app_id : str
            The id of the app to stop
        peer_id : str, optional
            The peer_id of the target node or None to stop the app on self (default: None)
        """

        if peer_id is not None:
            peer = Peer(peer_id=peer_id)
        else:
            peer = None

        await self.stub.Stop(StopAppRequest(id=ID(ulid=app_id), peer=peer))

    async def get_own_app_id(self) -> str:
        """
        Get the ID of the current app.

        This can only be called from a running app.

        Returns
        -------
        app_id : str
            The id of the current app
        """

        id = await self.stub.GetOwnAppId(self.empty)
        return id.ulid

A handle to the application management service.

Exposes methods to interact with the application management service, like for deploying and stopping apps on peers in the network.

Methods

async def deploy(self,
image: str,
local: bool,
ports: Iterable[int] = [],
peer_id: str | None = None) ‑> str
Expand source code
async def deploy(
    self,
    image: str,
    local: bool,
    ports: Iterable[int] = [],
    peer_id: Optional[str] = None,
) -> str:
    """
    Deploys an application in a docker image to a peer in the network.

    Returns the ULID of the deployed application.

    To deploy to self, leave the peer_id argument empty.

    Parameters
    ----------
    image : str
        A docker image name, can contain a tag, e.g. `my-docker-image:latest`
    local : bool
        Whether the image is available locally, without needing to pull it from a registry
    ports : Iterable[int], optional
        Ports to expose on the container (default: [])
    peer_id : str, optional
        The peer_id of the target node or None to deploy to self (default: None)

    Returns
    -------
    app_id : str
        The id of the deployed application
    """

    if peer_id is not None:
        peer = Peer(peer_id=peer_id)
    else:
        peer = None

    id = await self.stub.Deploy(
        DeployAppRequest(
            app=DockerApp(image=DockerImage(name=image), ports=ports),
            local=local,
            peer=peer,
        )
    )
    return id.ulid

Deploys an application in a docker image to a peer in the network.

Returns the ULID of the deployed application.

To deploy to self, leave the peer_id argument empty.

Parameters

image : str
A docker image name, can contain a tag, e.g. my-docker-image:latest
local : bool
Whether the image is available locally, without needing to pull it from a registry
ports : Iterable[int], optional
Ports to expose on the container (default: [])
peer_id : str, optional
The peer_id of the target node or None to deploy to self (default: None)

Returns

app_id : str
The id of the deployed application
async def get_own_app_id(self) ‑> str
Expand source code
async def get_own_app_id(self) -> str:
    """
    Get the ID of the current app.

    This can only be called from a running app.

    Returns
    -------
    app_id : str
        The id of the current app
    """

    id = await self.stub.GetOwnAppId(self.empty)
    return id.ulid

Get the ID of the current app.

This can only be called from a running app.

Returns

app_id : str
The id of the current app
async def list_running(self, peer_id: str | None = None) ‑> Iterable[bridge_pb2.RunningApp]
Expand source code
async def list_running(self, peer_id: Optional[str] = None) -> Iterable[RunningApp]:
    """
    Lists the running apps on a peer in the network.

    To list the running apps on self, leave the peer_id argument empty.

    Parameters
    ----------
    peer_id : str, optional
        The peer_id of the target node or None to list apps on self (default: None)

    Returns
    -------
    app_ids : Iterable[str]
        The ids of the running applications
    """

    if peer_id is not None:
        peer = Peer(peer_id=peer_id)
    else:
        peer = None

    response = await self.stub.ListRunning(ListRunningAppsRequest(peer=peer))
    return response.apps

Lists the running apps on a peer in the network.

To list the running apps on self, leave the peer_id argument empty.

Parameters

peer_id : str, optional
The peer_id of the target node or None to list apps on self (default: None)

Returns

app_ids : Iterable[str]
The ids of the running applications
async def stop(self, app_id: str, peer_id: str | None = None)
Expand source code
async def stop(self, app_id: str, peer_id: Optional[str] = None):
    """
    Stops a running app with an ID on a peer in the network.

    To stop the running app on self, leave the peer_id argument empty.

    Parameters
    ----------
    app_id : str
        The id of the app to stop
    peer_id : str, optional
        The peer_id of the target node or None to stop the app on self (default: None)
    """

    if peer_id is not None:
        peer = Peer(peer_id=peer_id)
    else:
        peer = None

    await self.stub.Stop(StopAppRequest(id=ID(ulid=app_id), peer=peer))

Stops a running app with an ID on a peer in the network.

To stop the running app on self, leave the peer_id argument empty.

Parameters

app_id : str
The id of the app to stop
peer_id : str, optional
The peer_id of the target node or None to stop the app on self (default: None)
class DeployAppRequest (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class DockerApp (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class DockerImage (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class Empty (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class ID (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class ListRunningAppsRequest (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class Peer (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class RunningApp (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR
class StopAppRequest (*args, **kwargs)

A ProtocolMessage

Ancestors

  • google._upb._message.Message
  • google.protobuf.message.Message

Class variables

var DESCRIPTOR