def create(definition_dict): """Instantiate an instance of the JobInterface based on inferred type :param definition_dict: deserialized JSON definition :type definition_dict: dict :return: instance of the RecipeDefinition appropriate for input data :rtype: :class:`recipe.configuration.definition.recipe_definition_1_0.RecipeDefinition_1_0` or :class:`recipe.seed.recipe_definition.RecipeDefinition` """ if RecipeDefinitionSunset.is_seed_dict(definition_dict): return RecipeDefinition(definition_dict) else: return LegacyRecipeDefinition(definition_dict)
def setUp(self): django.setup() self.workspace = storage_test_utils.create_workspace() interface_1 = { 'version': '1.0', 'command': 'my_command', 'command_arguments': 'args', 'input_data': [{ 'name': 'Test Input 1', 'type': 'file', 'media_types': ['text/plain'], }], 'output_data': [{ 'name': 'Test Output 1', 'type': 'files', 'media_type': 'image/png', }] } self.job_type_1 = job_test_utils.create_job_type(interface=interface_1) interface_2 = { 'version': '1.0', 'command': 'my_command', 'command_arguments': 'args', 'input_data': [{ 'name': 'Test Input 2', 'type': 'files', 'media_types': ['image/png', 'image/tiff'], }], 'output_data': [{ 'name': 'Test Output 2', 'type': 'file', }] } self.job_type_2 = job_test_utils.create_job_type(interface=interface_2) self.definition = { 'version': '1.0', 'input_data': [{ 'name': 'Recipe Input', 'type': 'file', 'media_types': ['text/plain'], }], 'jobs': [{ 'name': 'Job 1', 'job_type': { 'name': self.job_type_1.name, 'version': self.job_type_1.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input', 'job_input': 'Test Input 1', }] }, { 'name': 'Job 2', 'job_type': { 'name': self.job_type_2.name, 'version': self.job_type_2.version, }, 'dependencies': [{ 'name': 'Job 1', 'connections': [{ 'output': 'Test Output 1', 'input': 'Test Input 2', }] }] }] } self.recipe_def = LegacyRecipeDefinition(self.definition) self.recipe_def.validate_job_interfaces() self.new_definition = { 'version': '1.0', 'input_data': [{ 'name': 'Recipe Input', 'type': 'file', 'media_types': ['text/plain'], }], 'jobs': [{ 'name': 'Job 1', 'job_type': { 'name': self.job_type_1.name, 'version': self.job_type_1.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input', 'job_input': 'Test Input 1', }] }] } self.new_recipe_def = LegacyRecipeDefinition(self.new_definition) self.new_recipe_def.validate_job_interfaces() self.configuration = { 'version': '1.0', 'condition': { 'media_type': 'text/plain' }, 'data': { 'input_data_name': 'Recipe Input', 'workspace_name': self.workspace.name } } self.trigger_config = recipe_test_utils.MockTriggerRuleConfiguration( recipe_test_utils.MOCK_TYPE, self.configuration) self.new_configuration = { 'version': '1.0', 'condition': { 'media_type': 'application/json' }, 'data': { 'input_data_name': 'Recipe Input', 'workspace_name': self.workspace.name } } self.new_trigger_config = recipe_test_utils.MockTriggerRuleConfiguration( recipe_test_utils.MOCK_TYPE, self.new_configuration)
def setUp(self): django.setup() self.workspace = storage_test_utils.create_workspace() interface = { 'version': '1.0', 'command': 'my_command', 'command_arguments': 'args', 'input_data': [{ 'name': 'Test Input 1', 'type': 'file', 'media_types': ['text/plain'], }], 'output_data': [{ 'name': 'Test Output 1', 'type': 'files', 'media_type': 'image/png', }] } self.job_interface = JobInterface(interface) self.job_type = JobType.objects.create_job_type_v5( 'name', '1.0', self.job_interface) new_valid_interface = { 'version': '1.0', 'command': 'my_command', 'command_arguments': 'args', 'input_data': [{ 'name': 'Test Input 1', 'type': 'file', 'media_types': ['application/json'], }], 'output_data': [{ 'name': 'Test Output 1', 'type': 'files', 'media_type': 'image/png', }] } self.new_valid_job_interface = JobInterface(new_valid_interface) new_invalid_interface = { 'version': '1.0', 'command': 'my_command', 'command_arguments': 'args', 'input_data': [{ 'name': 'Test Input 2', 'type': 'files', 'media_types': ['image/png', 'image/tiff'], }], 'output_data': [{ 'name': 'Test Output 2', 'type': 'file', }] } self.new_invalid_job_interface = JobInterface(new_invalid_interface) self.definition = { 'version': '1.0', 'input_data': [{ 'name': 'Recipe Input', 'type': 'file', 'media_types': ['text/plain'], }], 'jobs': [{ 'name': 'Job 1', 'job_type': { 'name': self.job_type.name, 'version': self.job_type.version, }, 'recipe_inputs': [{ 'recipe_input': 'Recipe Input', 'job_input': 'Test Input 1', }] }] } self.recipe_def = LegacyRecipeDefinition(self.definition) self.recipe = RecipeType.objects.create_recipe_type( 'name', '1.0', 'title', 'description', self.recipe_def, None)