blob: d25c457f96aff3784e980b4b19f7eec3700c7107 [file] [log] [blame]
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
///*
// *
// * Licensed to the Apache Software Foundation (ASF) under one
// * or more contributor license agreements. See the NOTICE file
// * distributed with this work for additional information
// * regarding copyright ownership. The ASF licenses this file
// * to you under the Apache License, Version 2.0 (the
// * "License"); you may not use this file except in compliance
// * with the License. You may obtain a copy of the License at
// *
// * http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing,
// * software distributed under the License is distributed on an
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// * KIND, either express or implied. See the License for the
// * specific language governing permissions and limitations
// * under the License.
// *
// */
//
//package org.apache.airavata.application.gaussian.handler;
//
//import org.apache.airavata.gfac.core.context.JobExecutionContext;
//import org.apache.airavata.gfac.core.handler.AbstractHandler;
//import org.apache.airavata.gfac.core.handler.GFacHandlerException;
//import org.apache.airavata.model.appcatalog.appinterface.InputDataObjectType;
//import org.apache.airavata.model.experiment.ComputationalResourceScheduling;
//import org.apache.airavata.registry.cpi.ExperimentCatalogModelType;
//import org.apache.airavata.registry.cpi.RegistryException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.BufferedReader;
//import java.io.File;
//import java.io.FileReader;
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Map;
//import java.util.Properties;
//
//public class GaussianHandler extends AbstractHandler {
//
// private static final Logger logger = LoggerFactory.getLogger(GaussianHandler.class);
// public static final String LINK_SECTION = "%";
// public static final String ROUTE_SECTION = "#";
// public static final String PROC_SHARED = "procshared";
// public static final String MEM = "mem";
// public static final String CHK = "chk";
// public static final String PROC = "proc";
//
// public static final String EQUAL = "=";
// public static final String OPEN_PARENTHESES = "(";
// public static final String CLOSE_PARENTHESES = ")";
//
// private String mainInputFilePath;
// @Override
// public void invoke(JobExecutionContext jobExecutionContext) throws GFacHandlerException {
// super.invoke(jobExecutionContext);
// Map<String, String> configurations;
// Map<String, Object> parameters = jobExecutionContext.getInMessageContext().getParameters();
// // only get first input file, which is the main input file
// for (Object paraValue : parameters.values()) {
// if (paraValue instanceof InputDataObjectType) {
// InputDataObjectType inputDataObjectType = (InputDataObjectType) paraValue;
// mainInputFilePath = inputDataObjectType.getValue();
// break;
// }
// }
// if (mainInputFilePath != null) {
// File mainInputFile = new File(mainInputFilePath);
// if (mainInputFile.exists()) {
// try {
// configurations = parseGaussianInputFile(mainInputFile);
// ComputationalResourceScheduling taskScheduling = jobExecutionContext.getTaskData().getTaskScheduling();
// for (Map.Entry<String, String> inputConfig : configurations.entrySet()) {
// if (inputConfig.getKey().equals(PROC_SHARED)) {
// taskScheduling.setTotalCPUCount(Integer.parseInt(inputConfig.getValue()));
// } else if (inputConfig.getKey().equals(MEM)) {
// int userRequestedMem = Integer.parseInt(inputConfig.getValue());
// int additionalMem = (int) (userRequestedMem * 0.2);
// // TODO check (userRequestedMem + additionalMem) > maxNode or Queue allowed Mem
// taskScheduling.setTotalPhysicalMemory(userRequestedMem + additionalMem);
// } else if (inputConfig.getKey().equals(PROC)) {
// taskScheduling.setTotalCPUCount(Integer.parseInt(inputConfig.getValue()));
// } else {
// // TODO - handle other input configurations
// }
// logger.info("$$$$$$$$ " + inputConfig.getKey() + " --> " + inputConfig.getValue() + " $$$$$$$$$$$");
// }
// experimentCatalog.update(ExperimentCatalogModelType.TASK_DETAIL, jobExecutionContext.getTaskData(), jobExecutionContext.getTaskData().getTaskID());
// } catch (IOException e) {
// throw new GFacHandlerException("Error while reading main input file ", e);
// } catch (RegistryException e) {
// throw new GFacHandlerException("Error while updating task details", e);
// }
// } else {
// throw new GFacHandlerException("Main input file doesn't exists " + mainInputFilePath);
// }
//
// } else {
// throw new GFacHandlerException("Main input file path shouldn't be null");
// }
//
// }
//
// /* %procshared=6 , put this line to the map key:procshared , value:6
// keyword = option
// keyword(option)
// keyword=(option1, option2, …)
// keyword(option1, option2, …)*/
// // TODO - make this method private
// public Map<String, String> parseGaussianInputFile(File mainInputFile) throws IOException {
// Map<String, String> configs = new HashMap<String, String>();
// BufferedReader br = new BufferedReader(new FileReader(mainInputFile));
// String line = br.readLine();
// while (line != null) {
// line = line.trim();
// String keyword = null;
// String withoutKeyword = null;
// String option = null;
// if (line.startsWith(LINK_SECTION)) {
// int equalIndex = line.indexOf(EQUAL);
// int openParenthesesIndex = line.indexOf(OPEN_PARENTHESES);
// // read the keyword
// if (equalIndex > 0) {
// keyword = line.substring(1, equalIndex).trim();
// withoutKeyword = line.substring(equalIndex + 1, line.length()); // remove up to = sign
// } else if (openParenthesesIndex > 0) {
// keyword = line.substring(1, openParenthesesIndex).trim();
// withoutKeyword = line.substring(openParenthesesIndex, line.length()); // remove left side of ( sign
// } else {
// // TODO - malformed input configuration
// }
// // read the option
// if (openParenthesesIndex > 0) {
// if (withoutKeyword.endsWith(CLOSE_PARENTHESES)) {
// option = withoutKeyword.substring(1, withoutKeyword.length() - 1);
// } else {
// //TODO - malformed input configuration
// }
// } else {
// option = withoutKeyword.trim();
// }
// configs.put(keyword, option);
// } else if (line.startsWith(ROUTE_SECTION)) {
// // parse the line
// }
// line = br.readLine();
// }
// return configs;
// }
//
// @Override
// public void initProperties(Properties properties) throws GFacHandlerException {
//
// }
//
// @Override
// public void recover(JobExecutionContext jobExecutionContext) throws GFacHandlerException {
// // Implement this method if we need safe recover steps before rerun the task.
// }
//}