Package com.elastisys.scale.cloudadapters.aws.commons.functions

Source Code of com.elastisys.scale.cloudadapters.aws.commons.functions.InstanceToMachine

package com.elastisys.scale.cloudadapters.aws.commons.functions;

import java.util.List;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;

import com.amazonaws.services.ec2.model.Instance;
import com.elastisys.scale.cloudadapers.api.types.Machine;
import com.elastisys.scale.cloudadapers.api.types.MachineState;
import com.elastisys.scale.commons.json.JsonUtils;
import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.gson.JsonObject;

/**
* {@link Function} that translates an EC2 API {@link Instance} representation
* to its corresponding {@link Machine} representation.
*
*
*
*/
public class InstanceToMachine implements Function<Instance, Machine> {

  /**
   * Converts an {@link Instance} to a {@link Machine}.
   *
   * @see com.google.common.base.Function#apply(java.lang.Object)
   */
  @Override
  public Machine apply(Instance instance) {
    Preconditions.checkArgument(instance != null, "received null instance");

    String id = instance.getInstanceId();
    MachineState state = new InstanceStateToMachineState().apply(instance
        .getState());
    DateTime launchtime = new DateTime(instance.getLaunchTime(),
        DateTimeZone.UTC);
    List<String> publicIps = Lists.newArrayList();
    List<String> privateIps = Lists.newArrayList();
    String publicIp = instance.getPublicIpAddress();
    if (publicIp != null) {
      publicIps.add(publicIp);
    }
    String privateIp = instance.getPrivateIpAddress();
    if (privateIp != null) {
      privateIps.add(privateIp);
    }

    JsonObject metadata = JsonUtils.toJson(instance).getAsJsonObject();
    return new Machine(id, state, launchtime, publicIps, privateIps,
        metadata);
  }
}
TOP

Related Classes of com.elastisys.scale.cloudadapters.aws.commons.functions.InstanceToMachine

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.