/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.vmManager.environment.amazon;
/*
* #%L
* VmManager
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.util.ArrayList;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.amazonaws.services.ec2.model.Instance;
import com.amazonaws.services.ec2.model.InstanceStateChange;
import com.amazonaws.services.ec2.model.Reservation;
import com.amazonaws.services.ec2.model.StartInstancesResult;
import com.intuit.tank.vm.api.enumerated.VMProvider;
import com.intuit.tank.vm.api.enumerated.VMRegion;
import com.intuit.tank.vm.vmManager.VMInformation;
/**
* AmazonDataConverter
*
* @author dangleton
*
*/
public class AmazonDataConverter {
private static final Logger LOG = LogManager.getLogger(AmazonDataConverter.class);
public List<VMInformation> processStateChange(List<InstanceStateChange> changes) {
List<VMInformation> output = new ArrayList<VMInformation>();
try {
for (InstanceStateChange instance : changes) {
VMInformation info = new VMInformation();
info.setInstanceId(instance.getInstanceId());
info.setState(instance.getCurrentState().getName());
output.add(info);
}
return output;
} catch (Exception ex) {
LOG.error(ex.getMessage(), ex);
if (ex instanceof RuntimeException) {
throw (RuntimeException) ex;
}
throw new RuntimeException(ex);
}
}
/**
* @param data
* @param instance
* @param region
* @return
*/
public VMInformation instanceToVmInformation(Reservation data, Instance instance, VMRegion region) {
VMInformation info = new VMInformation();
info.setProvider(VMProvider.Amazon);
info.setRequestId(data.getRequesterId());
info.setImageId(instance.getImageId());
info.setInstanceId(instance.getInstanceId());
info.setKeyName(instance.getKeyName());
// info.setLaunchTime();
info.setRegion(region);
info.setPlatform(instance.getPlatform());
info.setPrivateDNS(instance.getPrivateDnsName());
info.setPublicDNS(instance.getPublicDnsName());
info.setState(instance.getState().getName());
info.setSize(instance.getInstanceType());
return info;
}
/**
* @param reservation
* @param region
* @return
*/
public List<VMInformation> processReservation(Reservation reservation, VMRegion region) {
List<VMInformation> output = new ArrayList<VMInformation>();
try {
for (Instance instance : reservation.getInstances()) {
VMInformation info = instanceToVmInformation(reservation, instance, region);
output.add(info);
}
return output;
} catch (Exception ex) {
LOG.error(ex.getMessage());
throw new RuntimeException(ex);
}
}
}