/*************************************************************************** * 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; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import com.vmware.vhadoop.api.vhm.ClusterMap; import com.vmware.vhadoop.api.vhm.HadoopActions.HadoopClusterInfo; import com.vmware.vhadoop.api.vhm.events.ClusterScaleCompletionEvent; public class ModelClusterMap implements ClusterMap { protected final static boolean ON = true; protected final static boolean OFF = false; class VM { String id; String cluster; String host; boolean power; public VM(final String id, final String cluster, final String host, final boolean power) { this.id = id; this.cluster = cluster; this.host = host; this.power = power; } @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("VM[id: ").append(id).append(", cluster:").append(cluster).append(", host:").append(host).append(", power: ").append(power); return sb.toString(); } } List<VM> vms = new LinkedList<VM>(); public void populateTestData() { vms.add(new VM("vm1", "clusterA", "hostX", ON)); vms.add(new VM("vm2", "clusterA", "hostY", ON)); vms.add(new VM("vm3", "clusterA", "hostX", ON)); vms.add(new VM("vm4", "clusterA", "hostY", OFF)); vms.add(new VM("vm5", "clusterB", "hostX", ON)); vms.add(new VM("vm6", "clusterB", "hostY", ON)); vms.add(new VM("vm7", "clusterB", "hostX", ON)); vms.add(new VM("vm8", "clusterB", "hostY", OFF)); } public ModelClusterMap(boolean prepopulate) { if (prepopulate) { populateTestData(); } } public List<VM> getMapContents() { return vms; } public void clearMap() { vms.clear(); } public void addVMToMap(final String name, final String cluster, final String host, final boolean power) { vms.add(new VM(name, cluster, host, power)); } public boolean setPowerStateForVM(final String name, final boolean power) { for (VM vm : vms) { if (vm.id.equals(name)) { boolean result = vm.power; vm.power = power; return result; } } return false; } @Override public Set<String> listComputeVMsForClusterAndPowerState(final String clusterId, final boolean powerState) { Set<String> selected = new HashSet<String>(); for (VM vm : vms) { if (vm.cluster.equals(clusterId) && vm.power == powerState) { selected.add(vm.id); } } return selected; } @Override public Set<String> listComputeVMsForClusterHostAndPowerState(final String clusterId, final String hostId, final boolean powerState) { Set<String> selected = new HashSet<String>(); for (VM vm : vms) { if (vm.cluster.equals(clusterId) && vm.power == powerState && vm.host.equals(hostId)) { selected.add(vm.id); } } return selected; } @Override public Set<String> listComputeVMsForPowerState(final boolean powerState) { Set<String> selected = new HashSet<String>(); for (VM vm : vms) { if (vm.power == powerState) { selected.add(vm.id); } } return selected; } @Override public Set<String> listHostsWithComputeVMsForCluster(final String clusterId) { Set<String> selected = new HashSet<String>(); for (VM vm : vms) { selected.add(vm.host); } return selected; } @Override public String getClusterIdForName(final String clusterFolderName) { return null; } @Override public String getHostIdForVm(final String vmid) { for (VM vm : vms) { if (vm.id.equals(vmid)) { return vm.host; } } return null; } @Override public Map<String, String> getHostIdsForVMs(final Set<String> vmsToED) { Map<String, String> selected = new HashMap<String, String>(); for (VM vm : vms) { if (vmsToED.contains(vm.id)) { selected.put(vm.id, vm.host); } } return selected; } @Override public ClusterScaleCompletionEvent getLastClusterScaleCompletionEvent(final String clusterId) { // TODO Auto-generated method stub return null; } @Override public Boolean checkPowerStateOfVms(final Set<String> vmIds, final boolean expectedPowerState) { for (VM vm : vms) { if (vmIds.contains(vm.id) && expectedPowerState != vm.power) { return false; } } return true; } @Override public Set<String> getAllKnownClusterIds() { Set<String> ids = new HashSet<String>(); for (VM vm : vms) { ids.add(vm.cluster); } return ids; } @Override public HadoopClusterInfo getHadoopInfoForCluster(final String clusterId) { // TODO Auto-generated method stub return null; } @Override public Map<String, String> getDnsNamesForVMs(final Set<String> vms) { // TODO Auto-generated method stub return null; } @Override public String getClusterIdForVm(final String vm) { for (VM target : vms) { if (target.id.equals(vm)) { return target.cluster; } } return null; } @Override public String toString() { StringBuffer sb = new StringBuffer(super.toString()+":\n"); for (VM vm : vms) { sb.append(vm).append("\n"); } return sb.toString(); } @Override public Integer getNumVCPUsForVm(String vm) { // TODO Auto-generated method stub return null; } @Override public Long getPowerOnTimeForVm(String vm) { // TODO Auto-generated method stub return null; } @Override public String getScaleStrategyKey(String clusterId) { // TODO Auto-generated method stub return null; } @Override public String getExtraInfo(String clusterId, String key) { // TODO Auto-generated method stub return null; } @Override public Set<String> getAllClusterIdsForScaleStrategyKey(String key) { // TODO Auto-generated method stub return null; } @Override public Set<String> listComputeVMsForCluster(String clusterId) { // TODO Auto-generated method stub return null; } @Override public Map<String, String> getVmIdsForDnsNames(Set<String> dnsNames) { // TODO Auto-generated method stub return null; } @Override public Boolean checkPowerStateOfVm(String vmId, boolean expectedPowerState) { // TODO Auto-generated method stub return null; } @Override public String getDnsNameForVM(String vmId) { // TODO Auto-generated method stub return null; } @Override public String getVmIdForDnsName(String dnsName) { // TODO Auto-generated method stub return null; } @Override public Map<String, Set<String>> getNicAndIpAddressesForVm(String vmId) { // TODO Auto-generated method stub return null; } @Override public Long getPowerOffTimeForVm(String vmId) { // TODO Auto-generated method stub return null; } @Override public String getMasterVmIdForCluster(String clusterId) { // TODO Auto-generated method stub return null; } }