Skip to content
Snippets Groups Projects
Commit 68de39e8 authored by Charlotte Hausman's avatar Charlotte Hausman
Browse files

fix html frame hardcoding and file transfer

parent 9ca5b39b
No related branches found
No related tags found
1 merge request!473fix html frame hardcoding and file transfer
Pipeline #2751 passed
......@@ -22,6 +22,7 @@ CARTA_URL_REPLACE_TEXT = "CARTA_URL_GOES_HERE"
CARTA_HTML_TEMPLATE_FILENAME = "carta_url_template.html"
CARTA_HTML_FILENAME = "carta_url_page.html"
class CartaLauncher:
"""Runs CARTA"""
......@@ -144,7 +145,7 @@ class CartaLauncher:
else:
carta_html = self.create_frame_html(carta_url=carta_url, html_dir=file_browser_path)
# CARTA is running and accessible, so send CARTA URL to AAT system or notify user
# CARTA is running and accessible, so send CARTA URL to AAT system or notify user
self.notify_ready(carta_url=carta_url, carta_html=carta_html)
# Activate timeout handler
......@@ -201,9 +202,7 @@ class CartaLauncher:
else:
self.logger.warning("WARNING: CARTA not running.")
@staticmethod
def create_frame_html(carta_url: str, html_dir: Path) -> Path:
def create_frame_html(self, carta_url: str, html_dir: Path) -> Path:
"""
Generate the HTML page containing the CARTA URL in a frame.
......@@ -211,19 +210,22 @@ class CartaLauncher:
:param html_dir: where HTML will be written
:return: HTML file we just created
"""
original_content = CartaLauncher.read_carta_url_template()
original_content = self.read_carta_url_template()
new_content = original_content.replace(CARTA_URL_REPLACE_TEXT, carta_url)
html_file = html_dir / CARTA_HTML_FILENAME
html_file.write_text(new_content)
return html_file
@staticmethod
def read_carta_url_template() -> str:
def read_carta_url_template(self) -> str:
"""
Get contents of carta_url_template.html
:return:
"""
path = Path("/packages/apps/cli/executables/pexable/carta_envoy/carta_envoy/carta_url_template.html")
if "rawdata" in self.settings["data_location"]:
path = Path("../carta_url_template.html")
else:
path = Path("carta_url_template.html")
return path.read_text()
......@@ -28,13 +28,12 @@ test_settings = {
launcher = CartaLauncher(settings=test_settings)
SUBPROCESS_COMMAND_PATCH = "carta_envoy.launchers.subprocess.Popen"
CARTA_HTML_TEST_PATH = (
"/lustre/aoc/cluster/pipeline/docker/workspaces/carta/requests/1/html"
)
CARTA_HTML_TEST_PATH = "/lustre/aoc/cluster/pipeline/docker/workspaces/carta/requests/1/html"
BACK_END_PORT = 7777
FRONT_END_PORT = 6464
class TestCartaLauncher:
"""
Exercise various CartaLauncher abilities.
......@@ -78,7 +77,8 @@ class TestCartaLauncher:
)
assert mock_subprocess.call_count == 0
def test_run_carta_with_aat(self):
@patch("carta_envoy.launchers.CartaLauncher.create_frame_html")
def test_run_carta_with_aat(self, mock_frame):
"""
Test that CARTA runs successfully with setup and teardown
"""
......@@ -110,9 +110,11 @@ class TestCartaLauncher:
stdout=-1,
stderr=-1,
)
assert mock_frame.call_count == 1
mock_archive_connect.send_carta_url_to_rh.assert_called_with("carta_url")
def test_run_carta_with_ws(self):
@patch("carta_envoy.launchers.CartaLauncher.create_frame_html")
def test_run_carta_with_ws(self, mock_frame):
"""
Test that CARTA runs successfully with setup and teardown
"""
......@@ -144,6 +146,7 @@ class TestCartaLauncher:
stdout=-1,
stderr=-1,
)
assert mock_frame.call_count == 1
mock_notification_connect.send_session_ready.assert_called_with("carta_url")
def test_generates_carta_html(self):
......@@ -159,9 +162,7 @@ class TestCartaLauncher:
carta_path = Path(tempfile.mkdtemp())
with patch(
"carta_envoy.launchers.CartaLauncher.create_frame_html"
) as mock_carta_html:
with patch("carta_envoy.launchers.CartaLauncher.create_frame_html") as mock_carta_html:
with patch(SUBPROCESS_COMMAND_PATCH):
launcher.run_carta(
path_to_carta=str(carta_path),
......@@ -190,7 +191,6 @@ class TestCartaLauncher:
fake_carta_url = "fake_carta_url"
fake_carta_path = "fake_carta_path"
template_content = """
<!DOCTYPE html>
<html>
......@@ -232,7 +232,7 @@ class TestCartaLauncher:
f"--fport={FRONT_END_PORT}",
"--folder=" + CARTA_HTML_TEST_PATH,
"--root=" + CARTA_HTML_TEST_PATH,
],
],
preexec_fn=None,
stdin=-1,
stdout=-1,
......@@ -266,7 +266,6 @@ class TestCartaLauncher:
with patch("pathlib.Path.read_text", return_value=expected_html):
assert fake_carta_url in carta_html.read_text()
@pytest.mark.skip("works only locally -- not in the CI. retained for hysterical porpoises")
def test_serves_carta_wrapper_no_mock(self):
"""
......@@ -280,8 +279,9 @@ class TestCartaLauncher:
assert html_dir.is_dir()
# 2. copy necessary files there
template_source = \
template_source = (
"/packages/apps/cli/executables/pexable/carta_envoy/carta_envoy/carta_url_template.html"
)
shutil.copy(template_source, CARTA_HTML_TEST_PATH)
test_data_dir = Path(
......@@ -324,9 +324,7 @@ class TestCartaLauncher:
stdout=-1,
stderr=-1,
)
mock_notification_connect.send_session_ready.assert_called_with(
fake_carta_url
)
mock_notification_connect.send_session_ready.assert_called_with(fake_carta_url)
carta_html = test_data_dir / "carta_url_page.html"
assert carta_html.is_file()
......
"""update carta file transfer
Revision ID: b3667e00ef4a
Revises: 80fc6e30540a
Create Date: 2021-09-02 11:17:35.481489
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "b3667e00ef4a"
down_revision = "80fc6e30540a"
branch_labels = None
depends_on = None
content = """executable = carta.sh
arguments = {{source_dir}} {{user_email}} {{request_id}} {{notify_ready}}
output = carta.out
error = carta.err
log = condor.log
SBIN_PATH = /lustre/aoc/cluster/pipeline/$ENV(CAPO_PROFILE)/workspaces/sbin
should_transfer_files = yes
transfer_input_files = $(SBIN_PATH)/pycapo, $(SBIN_PATH)/framework.sh, $(SBIN_PATH)/carta_url_template.html, $(SBIN_PATH)/productfetcher, $(SBIN_PATH)/carta_envoy
{{#need_data}}transfer_output_files = rawdata{{/need_data}}
request_memory = {{ramInGb}}
getenv = True
environment = "CAPO_PATH=/home/casa/capo"
requirements = HasLustre == True
queue
"""
old_content = """executable = carta.sh
arguments = {{source_dir}} {{user_email}} {{request_id}} {{notify_ready}}
output = carta.out
error = carta.err
log = condor.log
SBIN_PATH = /lustre/aoc/cluster/pipeline/$ENV(CAPO_PROFILE)/workspaces/sbin
should_transfer_files = yes
transfer_input_files = $(SBIN_PATH)/pycapo, $(SBIN_PATH)/framework.sh, $(SBIN_PATH)/productfetcher, $(SBIN_PATH)/carta_envoy
{{#need_data}}transfer_output_files = rawdata{{/need_data}}
request_memory = {{ramInGb}}
getenv = True
environment = "CAPO_PATH=/home/casa/capo"
requirements = HasLustre == True
queue
"""
def upgrade():
op.execute(
f"""
UPDATE workflow_templates
SET content=E'{content}' WHERE filename='carta.condor'
"""
)
def downgrade():
op.execute(
f"""
UPDATE workflow_templates
SET content=E'{old_content}' WHERE filename='carta.condor'
"""
)
......@@ -35,6 +35,7 @@ mkdir -p "$STORAGE_DIR"
# Copy wf_framework shell scripts to workflow dir
cp -a /packages/apps/cli/executables/wf_framework/sh/. "$WORKFLOW_DIR"
cp -a /packages/apps/cli/executables/wf_framework/html/. "$WORKFLOW_DIR"
cp -R /packages/apps/cli/executables/wf_framework/casa_requirements/.matplotlib "$WORKFLOW_DIR"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment