/*************************************************************************** * Copyright (c) 2013 VMware, Inc. All Rights Reserved. * Licensed 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 com.vmware.vhadoop.vhm.vc; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_AUTOMATION_ENABLE; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_AUTOMATION_INSTANCE_RANGE; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_AUTOMATION_MIN_INSTANCES; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_ELASTIC; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_JOB_TRACKER_PORT; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_MASTER_MOREF; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_MASTER_UUID; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_MASTER_CLUSTERNAME; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_PREFIX; import static com.vmware.vhadoop.vhm.vc.VcVlsi.VHM_EXTRA_CONFIG_UUID; import com.vmware.vhadoop.api.vhm.VCActions.MasterVmEventData; import com.vmware.vhadoop.api.vhm.VCActions.VMEventData; /** * Splits out those portions that the model requires so that it doesn't have a vmodl dependency */ public class VcVlsiHelper { static private MasterVmEventData getMasterVmData(VMEventData vmData) { if (vmData._masterVmData == null) { vmData._masterVmData = new MasterVmEventData(); } return vmData._masterVmData; } static void parseExtraConfig(VMEventData vmData, String key, String value) throws NumberFormatException { if (key.startsWith(VHM_EXTRA_CONFIG_PREFIX)) { //_log.log(Level.INFO, "PEC key:val = " + key + " : " + value); if (key.equals(VHM_EXTRA_CONFIG_UUID)) { vmData._serengetiFolder = value; } else if (key.equals(VHM_EXTRA_CONFIG_MASTER_UUID)) { vmData._masterUUID = value; } else if (key.equals(VHM_EXTRA_CONFIG_MASTER_MOREF)) { vmData._masterMoRef = value; } else if (key.equals(VHM_EXTRA_CONFIG_ELASTIC)) { vmData._isElastic = value.equalsIgnoreCase("true"); } else if (key.equals(VHM_EXTRA_CONFIG_AUTOMATION_ENABLE)) { getMasterVmData(vmData)._enableAutomation = value.equalsIgnoreCase("true"); } else if (key.equals(VHM_EXTRA_CONFIG_AUTOMATION_MIN_INSTANCES)) { /* Maintained for backwards compatibility - max is always unset */ if (getMasterVmData(vmData)._minInstances == null) { /* Only if not been set by the M7 code below */ getMasterVmData(vmData)._minInstances = Integer.valueOf(value); getMasterVmData(vmData)._maxInstances = -1; } } else if (key.equals(VHM_EXTRA_CONFIG_AUTOMATION_INSTANCE_RANGE)) { int separatorIndex = value.indexOf(':'); if ((separatorIndex < 1) || (value.length() < 3)) { throw new NumberFormatException("Format for VC key "+VHM_EXTRA_CONFIG_AUTOMATION_INSTANCE_RANGE+" is wrong: "+value); } getMasterVmData(vmData)._minInstances = Integer.parseInt(value.substring(0, separatorIndex)); getMasterVmData(vmData)._maxInstances = Integer.parseInt(value.substring(separatorIndex+1, value.length()));; } else if (key.equals(VHM_EXTRA_CONFIG_JOB_TRACKER_PORT)) { getMasterVmData(vmData)._jobTrackerPort = Integer.valueOf(value); } else if (key.equals(VHM_EXTRA_CONFIG_MASTER_CLUSTERNAME)) { getMasterVmData(vmData)._clusterName = value; } } } }