def test_create_workflow_from_json(create_yaml_workflow_schema): """Test create workflow from json specification.""" status_code = 201 response = { "message": "The workflow has been successfully created.", "workflow_id": "cdcf48b1-c2f3-4693-8230-b066e088c6ac", "workflow_name": "mytest", } env = {"REANA_SERVER_URL": "localhost"} reana_token = "000000" mock_http_response, mock_response = Mock(), Mock() mock_http_response.status_code = status_code mock_response = response workflow_json = yaml.load(create_yaml_workflow_schema, Loader=yaml.FullLoader) with patch.dict("os.environ", env): with patch( "reana_client.api.client.current_rs_api_client", make_mock_api_client("reana-server")(mock_response, mock_http_response), ): result = create_workflow_from_json( workflow_json=workflow_json["workflow"], name=response["workflow_name"], access_token=reana_token, parameters=workflow_json["inputs"], workflow_engine="serial", ) assert response["workflow_name"] == result["workflow_name"] assert response["message"] == result["message"]
def test_create_workflow_from_json(create_yaml_workflow_schema): """Test create workflow from json specification.""" status_code = 201 response = { "message": "The workflow has been successfully created.", "workflow_id": "cdcf48b1-c2f3-4693-8230-b066e088c6ac", "workflow_name": "mytest.1" } env = {'REANA_SERVER_URL': 'localhost'} reana_token = '000000' mock_http_response, mock_response = Mock(), Mock() mock_http_response.status_code = status_code mock_response = response workflow_json = yaml.load(create_yaml_workflow_schema, Loader=yaml.FullLoader) with patch.dict('os.environ', env): with patch( "reana_client.api.client.current_rs_api_client", make_mock_api_client('reana-server')(mock_response, mock_http_response)): result = create_workflow_from_json( workflow_json=workflow_json['workflow'], name=response['workflow_name'], access_token=reana_token, parameters=workflow_json['inputs'], workflow_engine='serial') assert response['workflow_name'] == result['workflow_name'] assert response['message'] == result['message']
def create_workflow(): """Create workflow.""" data = request.get_json() workflow_json = data['workflow_json'] name = data['worflow_name'] workflow_engine = 'yadage' parameters = { "files": ["code/helloworld.py", "data/names.txt"], "parameters": { "sleeptime": 2, "inputfile": "data/names.txt", "helloworld": "code/helloworld.py" } } access_token = current_app.config.get('REANA_ACCESS_TOKEN') response = create_workflow_from_json(workflow_json, name, access_token, parameters, workflow_engine) return jsonify(response)
def create_workflow(): """Create workflow.""" data = request.get_json() record_id = data['record_id'] workflow_json = data['workflow_json'] name = data['workflow_name'] workflow_engine = 'yadage' parameters = { "parameters": { "did": 404958, "xsec_in_pb": 0.00122, "dxaod_file": "https://recastwww.web.cern.ch/recastwww/data/" + "reana-recast-demo/" + "mc15_13TeV.123456.cap_recast_demo_signal_one.root" } } try: uuid = PersistentIdentifier.get('recid', record_id).object_uuid access_token = get_token(uuid) except PIDDoesNotExistError: abort(404) response = create_workflow_from_json( workflow_json, name, access_token, parameters, workflow_engine) reana_job = ReanaJob( user_id=current_user.id, record_id=uuid, reana_id=response.get('workflow_id'), name=name, params={ # "reana_id": response.get('workflow_id'), "json": workflow_json, "name": name, "parameters": parameters, } ) db.session.add(reana_job) db.session.commit() return jsonify(response)