Skip to content

Commit

Permalink
chore: some cleanup & fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
makkus committed Apr 21, 2024
1 parent e203935 commit 627cd67
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 23 deletions.
2 changes: 1 addition & 1 deletion src/kiara/interfaces/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ def set_console_width(width: Union[int, None] = None, prefer_env: bool = True):
con.width = width


class KiaraAPIWrap(object):
class BaseAPIWrap(object):
"""A wrapper class to help with lazy loading.
This is mostly relevant in terms of Python imports and the cli, because that allows
Expand Down
6 changes: 3 additions & 3 deletions src/kiara/interfaces/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import rich_click as click
import structlog

from kiara.interfaces import KiaraAPIWrap
from kiara.interfaces import BaseAPIWrap
from kiara.utils import is_debug, log_message
from kiara.utils.class_loading import find_all_cli_subcommands
from kiara.utils.cli import (
Expand Down Expand Up @@ -124,7 +124,7 @@ def cli(
if context_details_data is None:

timeout = 120 * 1000 # 2 minutes default timeout
api_wrap = KiaraAPIWrap(config, context, pipelines, plugin)
api_wrap = BaseAPIWrap(config, context, pipelines, plugin)
context_details = start_zmq_service(
api_wrap=api_wrap,
host=None,
Expand Down Expand Up @@ -182,7 +182,7 @@ def cli(
zmq_client.close()

else:
lazy_wrapper = KiaraAPIWrap(config, context, pipelines, plugin)
lazy_wrapper = BaseAPIWrap(config, context, pipelines, plugin)
ctx.obj = lazy_wrapper


Expand Down
57 changes: 50 additions & 7 deletions src/kiara/interfaces/cli/context/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
import rich_click as click
from rich import box
from rich.panel import Panel
from rich.table import Table

from kiara.interfaces import KiaraAPIWrap, get_console
from kiara.interfaces import BaseAPIWrap, get_console
from kiara.utils import log_exception
from kiara.utils.cli import (
dict_from_cli_args,
Expand Down Expand Up @@ -458,7 +459,7 @@ def start_service(
from kiara.utils.output import create_table_from_model_object
from kiara.zmq import start_zmq_service

api_wrap: KiaraAPIWrap = ctx.obj
api_wrap: BaseAPIWrap = ctx.obj

try:
details = start_zmq_service(
Expand Down Expand Up @@ -530,11 +531,13 @@ def stop_service(ctx, context_name: Union[None, str]):


@service.command("list")
@click.option("--details", "-d", help="Show more details.", is_flag=True, default=False)
@click.pass_context
def list_services(ctx):
def list_services(ctx, details: bool):
"""List all contexts that have a currently running service."""

from kiara.zmq import list_registered_contexts
from kiara.zmq import get_context_details, list_registered_contexts
from kiara.zmq.client import KiaraZmqClient

contexts = list_registered_contexts()
if not contexts:
Expand All @@ -543,9 +546,49 @@ def list_services(ctx):
sys.exit(0)

terminal_print()
terminal_print("Running services:")
for c in contexts:
terminal_print(f" - {c}")

if not details:
terminal_print("Running services:")
for c in contexts:
terminal_print(f" - {c}")

else:

from kiara.context import KiaraContextConfig, KiaraRuntimeConfig
from kiara.utils.output import create_table_from_model_object

table = Table(show_header=True, show_lines=False, box=box.SIMPLE)
table.add_column("context")
table.add_column("details")

for c in contexts:
context_details = get_context_details(c)
if not context_details:
table.add_row(c, "Can't get context details, skipping...")
continue
zmq_client = KiaraZmqClient(
host=context_details["host"], port=context_details["port"]
)
status = zmq_client.request(endpoint_name="service_status", args={})
state = status["state"]
timeout = status["timeout"]
context_config = KiaraContextConfig(**status["context_config"])
runtime_config = KiaraRuntimeConfig(**status["runtime_config"])

config_table = create_table_from_model_object(context_config)
runtime_table = create_table_from_model_object(runtime_config)

c_table = Table(show_header=False, show_lines=False, box=box.SIMPLE)
c_table.add_column("key", style="i")
c_table.add_column("value")
c_table.add_row("state", state)
c_table.add_row("timeout", str(timeout))
c_table.add_row("context config", config_table)
c_table.add_row("runtime config", runtime_table)

table.add_row(c, c_table)

terminal_print(table, in_panel="Service details")


@service.command("request")
Expand Down
4 changes: 2 additions & 2 deletions src/kiara/interfaces/cli/info/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from kiara.utils.cli.exceptions import handle_exception

if TYPE_CHECKING:
from kiara.interfaces import BaseAPI, KiaraAPIWrap
from kiara.interfaces import BaseAPI, BaseAPIWrap


@click.group("info")
Expand All @@ -33,7 +33,7 @@ def print_config(ctx, format: str):

from kiara.context import KiaraConfig

wrap: "KiaraAPIWrap" = ctx.obj
wrap: "BaseAPIWrap" = ctx.obj
config: KiaraConfig = wrap.kiara_config
title = "kiara config"
if config._config_path:
Expand Down
8 changes: 4 additions & 4 deletions src/kiara/interfaces/cli/render/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
from kiara.utils.cli.exceptions import handle_exception

if typing.TYPE_CHECKING:
from kiara.interfaces import KiaraAPIWrap
from kiara.interfaces import BaseAPIWrap
from kiara.interfaces.python_api.base_api import BaseAPI


Expand Down Expand Up @@ -51,7 +51,7 @@ def render(
) -> None:
"""Render-related sub-commands."""

api_wrap: KiaraAPIWrap = ctx.obj
api_wrap: BaseAPIWrap = ctx.obj
api_wrap.add_item("source_type", source_type)
api_wrap.add_item("target_type", target_type)

Expand All @@ -62,7 +62,7 @@ def render(
@handle_exception()
def list_render_combinations(ctx, format: str):

api_wrap: KiaraAPIWrap = ctx.obj
api_wrap: BaseAPIWrap = ctx.obj
kiara_api: BaseAPI = api_wrap.base_api

source_type = api_wrap.get_item("source_type")
Expand Down Expand Up @@ -103,7 +103,7 @@ def render_item(
) -> None:
"""Render an internal kiara item."""

api_wrap: KiaraAPIWrap = ctx.obj
api_wrap: BaseAPIWrap = ctx.obj
kiara_api: BaseAPI = api_wrap.base_api

source_type = api_wrap.get_item("source_type")
Expand Down
6 changes: 3 additions & 3 deletions src/kiara/zmq/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from pydantic import BaseModel, Field

from kiara.defaults import KIARA_MAIN_CONTEXT_DATA_PATH, KIARA_MAIN_CONTEXT_LOCKS_PATH
from kiara.interfaces import KiaraAPIWrap
from kiara.interfaces import BaseAPIWrap

if typing.TYPE_CHECKING:
pass
Expand Down Expand Up @@ -75,7 +75,7 @@ def get_context_details(context_name: str) -> Union[Dict, None]:


def start_zmq_service(
api_wrap: KiaraAPIWrap,
api_wrap: BaseAPIWrap,
host: Union[str, None],
port: Union[int, None] = None,
stdout: Union[str, None] = None,
Expand Down Expand Up @@ -196,7 +196,7 @@ def start_zmq_service(


def ensure_zmq_service(
api_wrap: KiaraAPIWrap,
api_wrap: BaseAPIWrap,
host: str,
port: int,
stdout: str,
Expand Down
21 changes: 18 additions & 3 deletions src/kiara/zmq/service/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@

from kiara.defaults import KIARA_MAIN_CONTEXT_LOCKS_PATH
from kiara.exceptions import KiaraException
from kiara.interfaces import BaseAPI, KiaraAPIWrap, get_console, get_proxy_console
from kiara.interfaces import BaseAPIWrap, get_console, get_proxy_console
from kiara.interfaces.cli.proxy_cli import proxy_cli
from kiara.interfaces.python_api.base_api import BaseAPI
from kiara.interfaces.python_api.proxy import ApiEndpoints
from kiara.zmq import (
KiaraZmqServiceDetails,
Expand All @@ -26,7 +27,7 @@
class KiaraZmqAPI(object):
def __init__(
self,
api_wrap: KiaraAPIWrap,
api_wrap: BaseAPIWrap,
stdout: Union[str, None] = None,
stderr: Union[str, None] = None,
host: Union[str, None] = None,
Expand All @@ -48,7 +49,7 @@ def __init__(
with socketserver.TCPServer((host_ip, 0), None) as s: # type: ignore
port = s.server_address[1]

self._api_wrap: KiaraAPIWrap = api_wrap
self._api_wrap: BaseAPIWrap = api_wrap
self._api_wrap.exit_process = False

self._listen_host: str = host_ip
Expand Down Expand Up @@ -158,6 +159,20 @@ def service_loop(self):
print("Shutting down...", file=self._stdout)
result = "ok"
stop = True
elif decoded.endpoint == "service_status":
context_config = (
self._api_wrap.base_api.context.context_config.model_dump()
)
runtime_config = (
self._api_wrap.base_api.context.runtime_config.model_dump()
)

result = {
"state": "running",
"timeout": timeout,
"context_config": context_config,
"runtime_config": runtime_config,
}
elif decoded.endpoint == "cli":
result = self.call_cli(api=api, **decoded.args)
elif decoded.endpoint == "control":
Expand Down

0 comments on commit 627cd67

Please sign in to comment.