Package org.platformlayer.ops.machines

Source Code of org.platformlayer.ops.machines.PlatformLayerCloudContext

package org.platformlayer.ops.machines;

import java.util.List;

import javax.inject.Inject;

import org.platformlayer.core.model.InstanceBase;
import org.platformlayer.core.model.ItemBase;
import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.core.model.Tag;
import org.platformlayer.ops.CloudContext;
import org.platformlayer.ops.Machine;
import org.platformlayer.ops.MachineCreationRequest;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.images.ImageStore;
import org.platformlayer.xaas.services.ModelClass;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PlatformLayerCloudContext implements CloudContext {
  static final Logger log = LoggerFactory.getLogger(PlatformLayerCloudContext.class);

  @Inject
  PlatformLayerHelpers platformLayerClient;

  @Inject
  ServiceProviderHelpers serviceProviderHelpers;

  @Inject
  MultiCloudScheduler scheduler;

  @Inject
  PlatformLayerCloudHelpers cloudHelpers;

  @Override
  public Machine createInstance(MachineCreationRequest request, PlatformLayerKey parent) throws OpsException {
    Tag uniqueTag = Tag.buildParentTag(parent);

    return cloudHelpers.putInstanceByTag(request, parent, uniqueTag);
  }

  @Inject
  ServiceProviderHelpers serviceProviders;

  @Override
  public InstanceBase findInstanceByInstanceKey(PlatformLayerKey instanceKey) throws OpsException {
    ModelClass<?> modelClass = serviceProviders.getModelClass(instanceKey);

    InstanceBase machine = (InstanceBase) platformLayerClient.getItem(instanceKey, modelClass.getJavaClass());
    return machine;
  }

  @Override
  public Machine findMachine(Tag tag) throws OpsException {
    List<InstanceBase> machines = cloudHelpers.findMachines(tag);

    if (machines.size() == 0) {
      return null;
    }
    if (machines.size() == 1) {
      return cloudHelpers.toMachine(machines.get(0));
    }
    throw new OpsException("Found multiple machines with tag: " + tag);
  }

  @Override
  public void ensureCreatedSecurityGroup(String securityGroup) throws OpsException {
    log.warn("Security groups stubbed out");
  }

  @Override
  public void ensurePortOpen(String securityGroup, String protocol, int port) throws OpsException {
    log.warn("Security groups stubbed out");
  }

  // @Override
  // public boolean isImageFormatTar() {
  // return true;
  // }

  @Override
  public void validate() throws OpsException {
    // TODO: Implement
    log.warn("Validate stub-implemented for PlatformCloudContext");
  }

  @Override
  public ImageStore getImageStore(MachineProvider targetCloud) throws OpsException {
    ImageStore imageStore = cloudHelpers.getImageStore(targetCloud);
    // UserInfo userInfo = OpsContext.get().getUserInfo();
    // URL url = new URL(userInfo.getConfig().getRequiredString("image.url"));
    // String protocol = "ssh://";
    // if (!protocol.equals(url.getProtocol())) {
    // throw new OpsException("Expected SSH protocol for image store");
    // }

    // Machine machine = new OpaqueMachine(url.getHost());
    //
    // String user = url.getUserInfo();
    // if (user == null) {
    // user = "root"; // Or username associated with ssh key?
    // }
    //
    // KeyPair sshKey = userInfo.getConfig();
    // OpsTarget imageStoreHost = machine.getTarget(user, sshKey);
    // return new DirectImageStore(imageStoreHost);
    if (imageStore == null) {
      throw new OpsException("Image store not found (or none active)");
    }

    return imageStore;
  }

  public void terminate(ItemBase machine) throws OpsException {
    platformLayerClient.deleteItem(machine.getKey());
  }

  @Override
  public Machine refreshMachine(Machine machine) throws OpsException {
    PlatformLayerKey key = machine.getKey();
    InstanceBase refreshed = findInstanceByInstanceKey(key);
    return cloudHelpers.toMachine(refreshed);

  }

}
TOP

Related Classes of org.platformlayer.ops.machines.PlatformLayerCloudContext

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.