Skip to content

Commit

Permalink
[#19] Develop a command to utilize the new loader as an alternative o…
Browse files Browse the repository at this point in the history
…ption to the canonical load (PoC) (#20)

* Refactor DAS-CLI services

* Set service image and version from config

* Use new toolbox loader

* Update CHANGELOG

* Update metta parser image version

* Refactor loader service
  • Loading branch information
levisingularity authored Feb 26, 2024
1 parent ea71439 commit 474da40
Show file tree
Hide file tree
Showing 22 changed files with 560 additions and 408 deletions.
1 change: 1 addition & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[#19] Develop a command to utilize the new loader as an alternative option to the canonical load (PoC)
[#15] Configure das cli containers name in config file
[#13] Wait for canonical load container to load files
[#9] Build das-cli binary
Expand Down
18 changes: 8 additions & 10 deletions commands/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import click
from config import Config
from utils import format_as_table
from config import Secret
from utils import table_parser


@click.group(help="Manage configuration settings.")
Expand All @@ -11,7 +11,7 @@ def config():

global config_service

config_service = Config()
config_service = Secret()


@config.command(help="Set Redis and MongoDB configuration settings.")
Expand Down Expand Up @@ -59,14 +59,12 @@ def set():
)
config_service.set("mongodb.password", mongodb_password)

canonical_load_container_name = click.prompt(
"Enter a name for the Canonical Load container",
default=config_service.get(
"canonical_load.container_name", "das-cli-canonical-load"
),
loader_container_name = click.prompt(
"Enter a name for the Loader container",
default=config_service.get("loader.container_name", "das-cli-loader"),
type=str,
)
config_service.set("canonical_load.container_name", canonical_load_container_name)
config_service.set("loader.container_name", loader_container_name)

openfaas_container_name = click.prompt(
"Enter a name for the OpenFaaS container",
Expand All @@ -93,6 +91,6 @@ def list():
)
return

config_table = format_as_table(config_dict)
config_table = table_parser(config_dict)

click.echo(config_table)
6 changes: 3 additions & 3 deletions commands/faas.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import click
from config import Config
from config import Secret
from enum import Enum
from services.container import OpenFaaSContainerService
from services import OpenFaaSContainerService
from exceptions import ContainerAlreadyRunningException
from sys import exit

Expand All @@ -19,7 +19,7 @@ def faas():

global config

config = Config()
config = Secret()

if not config.exists():
click.echo(
Expand Down
8 changes: 4 additions & 4 deletions commands/logs.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import click
from docker.errors import NullResource
from config import Config
from services.container import RedisContainerService, MongoContainerService
from services.container import OpenFaaSContainerService
from config import Secret
from services import RedisContainerService, MongoContainerService
from services import OpenFaaSContainerService


@click.group(help="Manage container logs.")
def logs():
global config

config = Config()
config = Secret()

if not config.exists():
click.echo(
Expand Down
87 changes: 57 additions & 30 deletions commands/metta.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import click
import os
from services.container import CanonicalLoadContainerService
from services.metta import MettaService
from config import Config
from services import PocLoaderContainerService, MettaLoaderContainerService
from services import MettaSyntaxValidatorService
from config import Secret
from sys import exit


Expand All @@ -14,7 +14,7 @@ def metta():

global config

config = Config()
config = Secret()

if not config.exists():
click.echo(
Expand All @@ -37,36 +37,53 @@ def metta():
is_flag=True,
default=False,
)
def load(path, canonical):
@click.option(
"--use-poc-loader",
required=False,
is_flag=True,
default=False,
)
def load(path, canonical, use_poc_loader):
"""
Load Metta file(s) into the Canonical Load service.
Load Metta file(s) into the Metta Loader service.
"""

canonical_load_container_name = config.get("canonical_load.container_name")
loader_container_name = config.get("loader.container_name")
redis_container_name = config.get("redis.container_name")
mongodb_container_name = config.get("mongodb.container_name")
services_not_running = False

try:
CanonicalLoadContainerService(
canonical_load_container_name,
redis_container_name,
mongodb_container_name,
).stop()

services_not_running = False
canonical_load_service = CanonicalLoadContainerService(
canonical_load_container_name,
redis_container_name,
mongodb_container_name,
)
if use_poc_loader:
PocLoaderContainerService(
loader_container_name,
redis_container_name,
mongodb_container_name,
).stop()
loader_service = PocLoaderContainerService(
loader_container_name,
redis_container_name,
mongodb_container_name,
)
else:
MettaLoaderContainerService(
loader_container_name,
redis_container_name,
mongodb_container_name,
).stop()
loader_service = MettaLoaderContainerService(
loader_container_name,
redis_container_name,
mongodb_container_name,
)

if not canonical_load_service.redis_container.container_running():
if not loader_service.redis_container.container_running():
click.echo("Redis is not running")
services_not_running = True
else:
click.echo(f"Redis is running on port {config.get('redis.port')}")

if not canonical_load_service.mongodb_container.container_running():
if not loader_service.mongodb_container.container_running():
click.echo("MongoDB is not running")
services_not_running = True
else:
Expand All @@ -79,14 +96,24 @@ def load(path, canonical):
exit(1)

click.echo("Loading metta file(s)...")
canonical_load_service.start_container(
path,
canonical,
mongodb_port=config.get("mongodb.port"),
mongodb_username=config.get("mongodb.username"),
mongodb_password=config.get("mongodb.password"),
redis_port=config.get("redis.port"),
)

if use_poc_loader:
loader_service.start_container(
path,
canonical,
mongodb_port=config.get("mongodb.port"),
mongodb_username=config.get("mongodb.username"),
mongodb_password=config.get("mongodb.password"),
redis_port=config.get("redis.port"),
)
else:
loader_service.start_container(
path,
mongodb_port=config.get("mongodb.port"),
mongodb_username=config.get("mongodb.username"),
mongodb_password=config.get("mongodb.password"),
redis_port=config.get("redis.port"),
)
click.echo("Done.")
except FileNotFoundError:
click.echo(f"The specified path '{path}' does not exist.")
Expand All @@ -105,7 +132,7 @@ def validate(filepath: str):
Validate the syntax of a Metta file or directory.
"""

metta_service = MettaService()
metta_service = MettaSyntaxValidatorService()
click.echo("Checking syntax...")

if os.path.isdir(filepath):
Expand Down
20 changes: 13 additions & 7 deletions commands/server.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import click
from services.container import (
from services import (
RedisContainerService,
MongoContainerService,
CanonicalLoadContainerService,
MettaLoaderContainerService,
OpenFaaSContainerService,
PocLoaderContainerService,
)
from sys import exit
from config import Config
from config import Secret


@click.group(help="Manage server-related operations.")
Expand All @@ -17,7 +18,7 @@ def server():

global config

config = Config()
config = Secret()

if not config.exists():
click.echo(
Expand Down Expand Up @@ -96,16 +97,21 @@ def stop():
redis_container_name = config.get("redis.container_name")
mongodb_container_name = config.get("mongodb.container_name")
openfaas_container_name = config.get("openfaas.container_name")
canonical_load_container_name = config.get("canonical_load.container_name")
loader_container_name = config.get("loader.container_name")

click.echo(f"Stopping/Removing Currently Running Services")
OpenFaaSContainerService(
openfaas_container_name,
redis_container_name,
mongodb_container_name,
).stop()
CanonicalLoadContainerService(
canonical_load_container_name,
PocLoaderContainerService(
loader_container_name,
redis_container_name,
mongodb_container_name,
).stop()
MettaLoaderContainerService(
loader_container_name,
redis_container_name,
mongodb_container_name,
).stop()
Expand Down
3 changes: 3 additions & 0 deletions config/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .secrets import Secret
from .active_services import ActiveServices
from .config import *
10 changes: 10 additions & 0 deletions config/active_services.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import os
from utils import JsonHandler
from config.config import ACTIVE_SERVICES_PATH


class ActiveServices(JsonHandler):
_default_container_path = os.path.expanduser(ACTIVE_SERVICES_PATH)

def __init__(self):
super().__init__(self._default_container_path)
21 changes: 21 additions & 0 deletions config/config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# PATHS

SECRETS_PATH = "~/.das/config.json"
ACTIVE_SERVICES_PATH = "~/.das/containers.json"

# SERVICES

REDIS_IMAGE_NAME = "redis"
REDIS_IMAGE_VERSION = "7.2.3-alpine"

MONGODB_IMAGE_NAME = "mongo"
MONGODB_IMAGE_VERSION = "6.0.13-jammy"

METTA_LOADER_IMAGE_NAME = "trueagi/das"
METTA_LOADER_IMAGE_VERSION = "v0.1.1-toolbox"

METTA_PARSER_IMAGE_NAME = "trueagi/das"
METTA_PARSER_IMAGE_VERSION = "v0.1.1-toolbox"

POC_LOADER_IMAGE_IMAGE_NAME = "levisingnet/canonical-load"
POC_LOADER_IMAGE_IMAGE_VERSION = "latest"
10 changes: 10 additions & 0 deletions config/secrets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import os
from utils import JsonHandler
from config.config import SECRETS_PATH


class Secret(JsonHandler):
_default_config_path = os.path.expanduser(SECRETS_PATH)

def __init__(self):
super().__init__(self._default_config_path)
10 changes: 10 additions & 0 deletions services/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from .loader_container_service import (
PocLoaderContainerService,
MettaLoaderContainerService,
)
from .container_service import Container, ContainerService
from .metta_parser_container_service import MettaParserContainerService
from .metta_syntax_validator_service import MettaSyntaxValidatorService
from .mongo_container_service import MongoContainerService
from .openfaas_container_service import OpenFaaSContainerService
from .redis_container_service import RedisContainerService
Loading

0 comments on commit 474da40

Please sign in to comment.