Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ssa/workspaces
1 result
Show changes
Commits on Source (2)
......@@ -28,9 +28,10 @@ class CasaConfigure:
Class for unifying environment setup. Required by all CASA Runner types
"""
def __init__(self, parameters: dict):
def __init__(self, parameters: dict, content: dict):
self.logger = logging.getLogger("casa_envoy")
self.parameters = parameters
self.metadata_content = content
def setup_environment(self):
"""
......@@ -40,10 +41,15 @@ class CasaConfigure:
"""
os.environ["SCIPIPE_ROOTDIR"] = self.parameters["rootDirectory"]
if "vlass" in self.parameters["product_type"]:
os.environ["CASA_HOME"] = self.parameters["vlassHome"]
# If user specified CASA Version, use it
if "casaHome" in self.metadata_content:
os.environ["CASA_HOME"] = self.metadata_content.get("casaHome")
else:
os.environ["CASA_HOME"] = self.parameters["homeForReprocessing"]
# If VLASS, use the current VLASS CASA release
if "vlass" in self.parameters["product_type"]:
os.environ["CASA_HOME"] = self.parameters["vlassHome"]
else:
os.environ["CASA_HOME"] = self.parameters["homeForReprocessing"]
os.environ["LANG"] = "en_US.UTF-8"
os.environ["PPR_FILENAME"] = self.parameters["ppr"]
......
......@@ -74,6 +74,7 @@ class CasaLauncher:
self.logger = logging.getLogger("casa_envoy")
self.runner = runner
self.parameters = runner.parameters
self.metadata = get_abs_file(self.runner.parameters.get("metadata"))
def run(self):
"""
......@@ -81,7 +82,7 @@ class CasaLauncher:
:return:
"""
CasaConfigure(self.parameters).setup_environment()
CasaConfigure(self.parameters, json.loads(self.metadata.content)).setup_environment()
# Check if running locally or with rapid testing parameters, if so, run Vela instead
if self.parameters.get("useCasa"):
......@@ -235,3 +236,21 @@ class ImagingLauncher(LauncherIF):
else:
self.logger.error("SPL ERROR: This product locator is not calibratable! Please check your inputs")
return False
class SplitLauncher(LauncherIF):
def __init__(self, parameters: dict):
self.logger = logging.getLogger("casa_envoy")
self.parameters = parameters
self.ppr = get_abs_file(parameters.get("ppr"))
self.metadata = get_abs_file(parameters.get("metadata"))
self.content = json.loads(self.metadata.content)
self.runner = determine_runner_type(parameters)
def launch_casa(self):
self.prepare_for_casa()
run_audit(self.logger, self.ppr, self.metadata, self.parameters)
CasaLauncher(self.runner).run()
def prepare_for_casa(self):
GeneralFoundation(self.parameters, self.metadata).data_foundation()
......@@ -27,7 +27,7 @@ import sys
from casa_envoy.enums import ProductType
from casa_envoy.interfaces import LauncherIF
from casa_envoy.launchers import CalibrationLauncher, ImagingLauncher
from casa_envoy.launchers import CalibrationLauncher, ImagingLauncher, SplitLauncher
from pycapo import CapoConfig
"""
......@@ -115,6 +115,9 @@ def _setup_launcher(path: pathlib.Path, args: argparse.Namespace) -> LauncherIF:
}
return ImagingLauncher(parameters)
elif args.split is not None:
parameters = {**parameters, **_get_settings(path, args.split)}
return SplitLauncher(parameters)
def arg_parser() -> argparse.ArgumentParser:
......@@ -154,6 +157,14 @@ def arg_parser() -> argparse.ArgumentParser:
required=False,
help="run a VLASS imaging CASA pipeline",
)
parser.add_argument(
"-s",
"--split",
nargs=2,
action="store",
required=False,
help="run a PIMS Split CASA pipeline",
)
parser.add_argument(
"-p",
"--parallel",
......
......@@ -19,11 +19,13 @@
"""
Tests for casa_envoy Configure
"""
import json
import os
from pathlib import Path
from unittest.mock import patch
from casa_envoy.configure import CasaConfigure, StandardRunner, ParallelRunner
from casa_envoy.schema import AbstractTextFile
cal_parameters = {
"useCasa": False,
......@@ -47,6 +49,10 @@ parallel_parameters = {
"requested_parallel": "4",
}
test_cal_metadata = AbstractTextFile(
filename="test/input_files/test.json", content=Path("test/input_files/test.json").read_text()
)
class TestCasaConfigure:
"""
......@@ -54,7 +60,8 @@ class TestCasaConfigure:
"""
def test_setup_environment(self):
CasaConfigure(parameters=cal_parameters).setup_environment()
content = json.loads(test_cal_metadata.content)
CasaConfigure(parameters=cal_parameters, content=content).setup_environment()
assert os.environ.get("SCIPIPE_ROOTDIR") == cal_parameters["rootDirectory"]
assert os.environ.get("CASA_HOME") == cal_parameters["homeForReprocessing"]
assert os.environ.get("PPR_FILENAME") == "test/input_files/PPR.xml"
......
......@@ -37,7 +37,7 @@ class WorkflowRequestState(Enum):
class ArchiveWorkflows(Enum):
"""
Enum that specifies the workflows initiated from the AAT
Enum that specifies the workflows initiated from the AAT or VLASS
"""
CARTA = "carta"
......
......@@ -124,7 +124,7 @@ class WorkflowInfo(WorkflowInfoIF):
if "ingest" in workflow_name:
argument["need_project_metadata"] = True
if "vlass" in workflow_name:
if any(item in workflow_name for item in ["vlass", "pims"]):
if "coarse" in workflow_name:
argument["need_project_metadata"] = True
......