Skip to content

Commit

Permalink
Merge pull request #10 from fabiobarkoski/load-params
Browse files Browse the repository at this point in the history
Implement volumes and ports
  • Loading branch information
faermanj authored Nov 17, 2023
2 parents 1af0b2a + d3f86b9 commit e4fabbc
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 6 deletions.
3 changes: 3 additions & 0 deletions up_splat/up_splat/up.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@ prompts:
env:
- AI_OFFLINETOKEN
- PULL_SECRET
default_volumes: true
default_ports: true

2 changes: 2 additions & 0 deletions uplib/uplib/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ class Config(Enum):
default_image = "default_image"
welcome_message = "welcome_message"
log_level = "log_level"
volumes = "volumes"
ports = "ports"

def get(self):
key = self.value
Expand Down
11 changes: 9 additions & 2 deletions uplib/uplib/containers.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import re
import docker
import subprocess
from rich.console import Console
from rich.markup import escape

from dataclasses import dataclass, field
from typing import TypeAlias
from .logging import log
from datetime import datetime
from . import settings_maps

# https://docker-py.readthedocs.io/en/stable/containers.html
@dataclass
Expand Down Expand Up @@ -37,16 +40,20 @@ def run(self, run: ContainerRun):
command = ["sh", "-c", subprocess.list2cmdline(command)]
log.debug("$: %s", run)
name = run.name if run.name else generate_container_name(run)
console = Console()
try:
container = client.containers.run(
name=name,
image=run.image,
command= command,
auto_remove=run.auto_remove,
detach=True)
volumes=settings_maps.get("volumes"),
ports=settings_maps.get("ports"),
detach=True
)
for line in container.logs(stream=True):
line = line.decode("utf-8").strip()
log.info("%s", line)
console.print(escape(line))
container.wait()
log.debug("container ended.")

Expand Down
30 changes: 27 additions & 3 deletions uplib/uplib/plugins.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import importlib
from logging import debug
import pkgutil
import os
import pluggy
Expand All @@ -9,6 +10,7 @@
from .containers import Containers
from .hookspecs import containers_for_prompt
from .logging import log
from .config import Config


def load_plugins(context):
Expand Down Expand Up @@ -64,7 +66,8 @@ def load_settings(plugin_name, settings_path):
prompts = settings.get("prompts", [])
log.debug("Loading %s prompts: %s", len(prompts), prompts)
load_prompts(prompts)
# Load Volumes
#load_volumes()
#load_ports()
# Load Ports
# ...
log.debug("Settings loaded")
Expand All @@ -82,6 +85,12 @@ def prefix_for(plugin_mod):
def load_prompts(prompts):
for prompt_cfg in prompts:
load_prompt(prompt_cfg)
log.debug("use default volumes? %s", prompt_cfg.get("default_volumes"))
if prompt_cfg.get("default_volumes"):
load_volumes()
log.debug("use default ports? %s", prompt_cfg.get("default_ports"))
if prompt_cfg.get("default_ports"):
load_ports()

def load_prompt(prompt_cfg):
log.debug("Loading prompt %s", prompt_cfg)
Expand All @@ -104,10 +113,25 @@ def load_env_list(prompt, env):
for var in env:
log.debug("Loading environment variable [%s]", var)
env_map[var] = {}

log.debug(settings_map)

def load_volumes():
log.debug("Loading volumes")
_ = settings("volumes")
volumes = settings_maps.get("volumes")
if not volumes:
settings_maps["volumes"] = Config.volumes.get()

def load_ports():
log.debug("Loading ports")
_ = settings("ports")
ports = settings_maps.get("ports")
if not ports:
settings_maps["ports"] = Config.ports.get()

def settings(prompt):
settings_map = settings_maps.get(prompt)
if not settings_map:
settings_map = {}
settings_maps[prompt] = settings_map
return settings_map
return settings_map
8 changes: 7 additions & 1 deletion uplib/uplib/up.yaml
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
default_image: fedora
welcome_message: Thank you for running up!
welcome_message: Thank you for running up!
volumes:
/home/fabio/:
bind: /mnt/vol2
mode: rw
ports:
2222/tcp: 3333

0 comments on commit e4fabbc

Please sign in to comment.