diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/UC1-scheduling-unit-observation-strategy.json b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/UC1-scheduling-unit-observation-strategy.json index 33a51e3c0f967a083a8cd8e212f68eddfed5f3bb..7bdedc32a8c57451b9751bf30af8d6892a17fdcd 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/UC1-scheduling-unit-observation-strategy.json +++ b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/UC1-scheduling-unit-observation-strategy.json @@ -206,15 +206,16 @@ "producer": "Calibrator Observation 1", "consumer": "Pipeline 1", "tags": [], - "input": { - "role": "any", - "datatype": "visibilities" - }, "output": { "role": "correlator", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" + }, + "input": { + "role": "any", + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -222,15 +223,16 @@ "producer": "Calibrator Observation 2", "consumer": "Pipeline 2", "tags": [], - "input": { - "role": "any", - "datatype": "visibilities" - }, "output": { "role": "correlator", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" + }, + "input": { + "role": "any", + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -238,15 +240,16 @@ "producer": "Target Observation", "consumer": "Pipeline target1", "tags": [], - "input": { - "role": "any", - "datatype": "visibilities" - }, "output": { "role": "correlator", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" + }, + "input": { + "role": "any", + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": { "sap": [ "target1" @@ -258,15 +261,16 @@ "producer": "Target Observation", "consumer": "Pipeline target2", "tags": [], - "input": { - "role": "any", - "datatype": "visibilities" - }, "output": { "role": "correlator", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" + }, + "input": { + "role": "any", + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": { "sap": [ "target2" @@ -278,15 +282,16 @@ "producer": "Pipeline 1", "consumer": "Ingest", "tags": [], - "input": { + "output": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "output": { + "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -294,15 +299,16 @@ "producer": "Pipeline 2", "consumer": "Ingest", "tags": [], - "input": { + "output": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "output": { + "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -310,15 +316,16 @@ "producer": "Pipeline target1", "consumer": "Ingest", "tags": [], - "input": { + "output": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "output": { + "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -326,15 +333,16 @@ "producer": "Pipeline target2", "consumer": "Ingest", "tags": [], - "input": { + "output": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "output": { + "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" } diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/common_schema_template-tasks-1.json b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/common_schema_template-tasks-1.json index 01c7c91fdb8cccbc94aae63ac1539fb006d136e3..533927b66e7f5a113a664d89190ba044ac07f600 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/common_schema_template-tasks-1.json +++ b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/common_schema_template-tasks-1.json @@ -13,16 +13,24 @@ "properties": { "role": { "type": "string", - "title": "Role" + "title": "Role", + "enum": ["correlator", "beamformer", "inspection plots", "calibrator", "target", "any"] }, "datatype": { "type": "string", - "title": "Data Type" + "title": "Data Type", + "enum": ["visibilities", "time series", "instrument model", "image", "quality"] + }, + "dataformat": { + "type": "string", + "title": "Data Format", + "enum": ["MeasurementSet", "Beamformed", "QA_HDF5", "QA_Plots"] } }, "required": [ "role", - "datatype" + "datatype", + "dataformat" ] } } diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/scheduling_unit_template-scheduling_unit-1.json b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/scheduling_unit_template-scheduling_unit-1.json index 00af272aa1318b9628e974edd49baed3be4ec25a..f92347892c9a0b3dcf67268e15f4b00ea85fe0c9 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/scheduling_unit_template-scheduling_unit-1.json +++ b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/scheduling_unit_template-scheduling_unit-1.json @@ -90,10 +90,6 @@ "$ref": "http://tmss.lofar.org/api/schemas/commonschematemplate/tasks/1/#/definitions/task_connector", "default": {} }, - "dataformat": { - "type": "string", - "title": "Data Format" - }, "selection_doc": { "type": "object", "title": "Filter selection", diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/short-observation-pipeline-ingest-scheduling-unit-observation-strategy.json b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/short-observation-pipeline-ingest-scheduling-unit-observation-strategy.json index 2709d25e53fe61844e7c32380b500d532c4f2437..6ae834740335d9474e7351d58c3739b1bf154a2f 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/schemas/short-observation-pipeline-ingest-scheduling-unit-observation-strategy.json +++ b/SAS/TMSS/backend/src/tmss/tmssapp/schemas/short-observation-pipeline-ingest-scheduling-unit-observation-strategy.json @@ -90,13 +90,14 @@ "tags": [], "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, "output": { "role": "correlator", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -106,13 +107,14 @@ "tags": [], "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, "output": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -122,13 +124,14 @@ "tags": [], "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, "output": { "role": "correlator", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" }, @@ -138,13 +141,14 @@ "tags": [], "input": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, "output": { "role": "any", - "datatype": "visibilities" + "datatype": "visibilities", + "dataformat": "MeasurementSet" }, - "dataformat": "MeasurementSet", "selection_doc": {}, "selection_template": "all" } diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py b/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py index 0444241ead1b434d321b15e102d860dedbc68be3..256128032bb3aa75343dbf05d9c0442df28d471a 100644 --- a/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py +++ b/SAS/TMSS/backend/src/tmss/tmssapp/tasks.py @@ -182,12 +182,12 @@ def create_task_drafts_from_scheduling_unit_draft(scheduling_unit_draft: models. input_role = models.TaskConnectorType.objects.get(task_template=consumer_task_draft.specifications_template, role=task_relation_definition["input"]["role"], datatype=task_relation_definition["input"]["datatype"], - dataformat=task_relation_definition["dataformat"], + dataformat=task_relation_definition["input"]["dataformat"], iotype=models.IOType.Choices.INPUT.value) output_role = models.TaskConnectorType.objects.get(task_template=producer_task_draft.specifications_template, role=task_relation_definition["output"]["role"], datatype=task_relation_definition["output"]["datatype"], - dataformat=task_relation_definition["dataformat"], + dataformat=task_relation_definition["output"]["dataformat"], iotype=models.IOType.Choices.OUTPUT.value) selection_template = models.TaskRelationSelectionTemplate.objects.get(name=task_relation_definition["selection_template"]) except Exception as e: diff --git a/SAS/TMSS/backend/test/t_scheduling.py b/SAS/TMSS/backend/test/t_scheduling.py index 6a6ff816fce2866f0f34a9c07c805aac6a83bf6c..e59c6c40d5eb7922e90df2043640cc6948d11cb4 100755 --- a/SAS/TMSS/backend/test/t_scheduling.py +++ b/SAS/TMSS/backend/test/t_scheduling.py @@ -408,9 +408,8 @@ class SchedulingTest(unittest.TestCase): # connect obs to pipeline scheduling_unit_doc['task_relations'].append({"producer": "Observation", "consumer": "Pipeline", - "input": { "role": "any", "datatype": "visibilities" }, - "output": { "role": "correlator", "datatype": "visibilities" }, - "dataformat": "MeasurementSet", + "input": { "role": "any", "datatype": "visibilities", "dataformat": "MeasurementSet"}, + "output": { "role": "correlator", "datatype": "visibilities", "dataformat": "MeasurementSet"}, "selection_doc": {}, "selection_template": "all" }) diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py index f0c8c331dc951757c7e98c3a3c90b467591446f7..25a535b91945c231215ec887a7ddf355d2418b21 100755 --- a/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py +++ b/SAS/TMSS/backend/test/t_tmssapp_specification_REST_API.py @@ -615,9 +615,9 @@ class TaskConnectorTestCase(unittest.TestCase): # POST a new item with invalid choice test_data_invalid = dict(test_data_creator.TaskConnectorType(task_template_url=self.task_template_url)) - test_data_invalid['dataformats'] = [BASE_URL + '/dataformat/forbidden/'] + test_data_invalid['dataformat'] = BASE_URL + '/dataformat/forbidden/' r_dict = POST_and_assert_expected_response(self, BASE_URL + '/task_connector_type/', test_data_invalid, 400, {}) - self.assertTrue('Invalid hyperlink' in str(r_dict['dataformats'])) + self.assertTrue('Invalid hyperlink' in str(r_dict['dataformat'])) def test_task_connector_POST_nonexistant_task_template_raises_error(self): @@ -665,8 +665,7 @@ class TaskConnectorTestCase(unittest.TestCase): GET_OK_and_assert_equal_expected_response(self, url, tc_test_data) test_patch = {"role": BASE_URL + '/role/calibrator', - "dataformats": [BASE_URL + '/dataformat/Beamformed', - BASE_URL + '/dataformat/MeasurementSet']} + "dataformat": BASE_URL + '/dataformat/Beamformed'} # PATCH item and verify PATCH_and_assert_expected_response(self, url, test_patch, 200, test_patch) diff --git a/SAS/TMSS/backend/test/tmss_test_data_django_models.py b/SAS/TMSS/backend/test/tmss_test_data_django_models.py index 08c549f734feed11c0cda5fe64edd974297cb0af..5dbab3037d9ed67817dbce9d42f9a3198f49f84e 100644 --- a/SAS/TMSS/backend/test/tmss_test_data_django_models.py +++ b/SAS/TMSS/backend/test/tmss_test_data_django_models.py @@ -106,6 +106,7 @@ def TaskRelationSelectionTemplate_test_data(name="my_TaskRelationSelectionTempla def TaskConnectorType_test_data() -> dict: return {"role": models.Role.objects.get(value='calibrator'), "datatype": models.Datatype.objects.get(value='instrument model'), + "dataformat": models.Dataformat.objects.get(value='Beamformed'), "task_template": models.TaskTemplate.objects.create(**TaskTemplate_test_data()), "iotype": models.IOType.objects.get(value=models.IOType.Choices.OUTPUT.value), "tags": []} @@ -243,7 +244,6 @@ def TaskRelationDraft_test_data(producer: models.TaskDraft = None, consumer: mod return {"tags": [], "selection_doc": {}, - "dataformat": models.Dataformat.objects.get(value='Beamformed'), "producer": producer, "consumer": consumer, "input_role": models.TaskConnectorType.objects.create(**TaskConnectorType_test_data()), @@ -303,7 +303,6 @@ def TaskRelationBlueprint_test_data(producer: models.TaskBlueprint = None, consu return {"tags": [], "selection_doc": {}, - "dataformat": models.Dataformat.objects.get(value='Beamformed'), "input_role": models.TaskConnectorType.objects.create(**TaskConnectorType_test_data()), "output_role": models.TaskConnectorType.objects.create(**TaskConnectorType_test_data()), "draft": models.TaskRelationDraft.objects.create(**TaskRelationDraft_test_data()), diff --git a/SAS/TMSS/backend/test/tmss_test_data_rest.py b/SAS/TMSS/backend/test/tmss_test_data_rest.py index 759885c6f84320b6f452ade940b1db2bfe8e4eb5..c7377e61e4e812909d7d0c432457d5b378319ea6 100644 --- a/SAS/TMSS/backend/test/tmss_test_data_rest.py +++ b/SAS/TMSS/backend/test/tmss_test_data_rest.py @@ -227,7 +227,7 @@ class TMSSRESTTestDataCreator(): return {"role": self.django_api_url + '/role/%s'%role, "datatype": self.django_api_url + '/datatype/image', - "dataformats": [self.django_api_url + '/dataformat/Beamformed'], + "dataformat": self.django_api_url + '/dataformat/Beamformed', "task_template": task_template_url, "iotype": self.django_api_url + '/iotype/%s'%iotype, "tags": []} @@ -438,7 +438,6 @@ class TMSSRESTTestDataCreator(): return {"tags": [], "selection_doc": selection_doc, - "dataformat": self.django_api_url + "/dataformat/Beamformed", "producer": producer_url, "consumer": consumer_url, "input_role": input_role_url, @@ -538,7 +537,6 @@ class TMSSRESTTestDataCreator(): # test data return {"tags": [], "selection_doc": selection_doc, - "dataformat": self.django_api_url + '/dataformat/MeasurementSet', "input_role": input_role_url, "output_role": output_role_url, "draft": draft_url,