Skip to content
Snippets Groups Projects

Hotfix: fix to assert error post installation

Merged dilawar requested to merge hotfix into main
Files
12
+ 35
22
@@ -13,7 +13,7 @@ from enum import Enum
from rich.progress import track
import bitia.helper as bhelper
from bitia.logger import logger, cprint, set_logger_level
from bitia.logger import logger, cprint, set_logger_level, console
from bitia import version as bversion
import bitia.pipeline as bpipeline
@@ -54,7 +54,10 @@ def session(func):
@app.command("create-container")
@session
def create_remote_container(
user_input, *, recreate: bool = False, output_lines: T.List[str] = []
user_input,
*,
recreate: bool = False,
output_lines: T.List[str] = [],
):
"""Create container for the pipeline. The container starts running
immediately on the server. Use command `logs` to stream the output.
@@ -71,9 +74,12 @@ def create_remote_container(
stream=True,
)
res.raise_for_status()
for line in track(
res.iter_lines(), description="BiTIA is setting up required infra..."
):
_lines = (
track(res.iter_lines(), description="BiTIA is setting up required infra...")
if not bconfig.get_config("plain", default=False)
else res.iter_lines()
)
for line in _lines:
output_lines.append(line.decode().rstrip())
logger.info(output_lines[-1])
return res
@@ -81,30 +87,35 @@ def create_remote_container(
@app.command("list-container")
@session
def list_remote_container(
user_input, server: str = bconfig.get_server()
) -> T.List[str]:
def list_containers(user_input):
"""List the remote server associated with the pipeline."""
for container in _list_remote_container(user_input):
cprint(container)
def _list_remote_container(user_input) -> T.List[str]:
pipeline = bpipeline.user_input_to_pipeline(user_input)
logger.debug(f"sha256 of `{pipeline.zipfile}` is `{pipeline.checksum}`")
logger.info(f"Finding container for {user_input}, sha256sum={pipeline.checksum}")
logger.info(
f"Finding container for user input `{user_input}` with sha256sum={pipeline.checksum}"
)
res = bhelper.get(
endpoint="container/list",
server=bconfig.get_server(),
params=dict(pipeline_sha256=pipeline.checksum),
)
res.raise_for_status()
containers = res.json()["containers"].split(",")
cprint(containers)
return containers
return res.json()["containers"].split(",")
@app.command("logs")
@session
def stream_log(user_input, server: str = bconfig.get_server()):
def stream_log(user_input):
"""Stream logs for the most recent run of a given pipeline."""
pipeline = bpipeline.user_input_to_pipeline(user_input)
logger.info(f"Finding container for {user_input}, sha256sum={pipeline.checksum}")
logger.info(
f"Finding container for user input {user_input} with sha256sum={pipeline.checksum}"
)
res = bhelper.get(
endpoint="logs",
params=dict(pipeline_sha256=pipeline.checksum),
@@ -113,7 +124,7 @@ def stream_log(user_input, server: str = bconfig.get_server()):
)
res.raise_for_status()
for line in res.iter_lines():
print(line.decode().rstrip())
cprint(line.decode().rstrip())
@app.command("submit")
@@ -126,7 +137,7 @@ def submit_pipeline(user_input, *, rerun: bool = False, output_lines: T.List[str
"""
res = create_remote_container(user_input, recreate=rerun, output_lines=output_lines)
logger.info("Remote container: %s", res)
containers = list_remote_container(user_input)
containers = _list_remote_container(user_input)
cprint(f"{containers}")
return containers
@@ -136,11 +147,10 @@ def submit_pipeline(user_input, *, rerun: bool = False, output_lines: T.List[str
def run_user_input(user_input, *, rerun: bool = False, output_lines: T.List[str] = []):
"""Run a pipeline"""
create_remote_container(user_input, recreate=rerun, output_lines=output_lines)
containers = list_remote_container(user_input)
return [
bhelper.log_container(container, server=bconfig.get_server())
for container in containers
]
containers = _list_remote_container(user_input)
for container in containers:
for _bl in bhelper.log_container(container, server=bconfig.get_server()):
print(_bl.decode().rstrip())
@app.command("checksum")
@@ -154,16 +164,19 @@ def main(
verbose: VerbosityLevel = typer.Option(
VerbosityLevel.warning, case_sensitive=False
),
plain: bool = False,
server: T.Optional[str] = None,
):
"""
Callback
"""
bconfig.set_config("plain", plain)
bconfig.set_config("verbosity", verbose.value)
set_logger_level(verbose.value)
if server is not None:
bconfig.set_server(server)
elif os.environ.get("BITIA_SERVER") is not None:
elif os.environ.get("BITIA_SERVER"):
bconfig.set_server(os.environ["BITIA_SERVER"])
else:
# TODO: Read from default config file.
Loading