Package org.platformlayer.service.cloud.direct.ops

Source Code of org.platformlayer.service.cloud.direct.ops.DirectCloudController

package org.platformlayer.service.cloud.direct.ops;

import javax.inject.Inject;

import org.platformlayer.core.model.InstanceBase;
import org.platformlayer.core.model.ItemBase;
import org.platformlayer.core.model.PublicEndpointBase;
import org.platformlayer.ops.Bound;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.MachineCreationRequest;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.PolicyChecker;
import org.platformlayer.ops.images.ImageStore;
import org.platformlayer.ops.machines.MachineProvider;
import org.platformlayer.ops.machines.PlatformLayerCloudHelpers;
import org.platformlayer.ops.machines.StorageConfiguration;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.service.cloud.direct.model.DirectCloud;
import org.platformlayer.service.cloud.direct.model.DirectInstance;
import org.platformlayer.service.cloud.direct.model.DirectPublicEndpoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DirectCloudController extends OpsTreeBase implements MachineProvider {
  static final Logger log = LoggerFactory.getLogger(DirectCloudController.class);

  @Bound
  DirectCloud model;

  @Inject
  PlatformLayerCloudHelpers cloudHelpers;

  @Handler
  public void handler() {
  }

  @Override
  protected void addChildren() {
  }

  @Override
  public ImageStore getImageStore() throws OpsException {
    return cloudHelpers.getGenericImageStore();
  }

  @Override
  public StorageConfiguration getStorageConfiguration() throws OpsException {
    throw new UnsupportedOperationException();
  }

  @Override
  public InstanceBase buildInstanceTemplate(MachineCreationRequest request) {
    DirectInstance directMachine = new DirectInstance();

    directMachine.minimumMemoryMb = request.minimumMemoryMB;
    directMachine.hostname = request.hostname;

    return directMachine;
  }

  @Override
  public PublicEndpointBase buildEndpointTemplate() {
    return new DirectPublicEndpoint();
  }

  @Override
  public ItemBase getModel() {
    return model;
  }

  @Override
  public float getPrice(MachineCreationRequest request) {
    if (!PolicyChecker.isSatisfied(request.hostPolicy, model.getTags())) {
      return Float.POSITIVE_INFINITY;
    }

    return 10;
  }

  @Override
  public String toString() {
    return "DirectCloudController [model=" + model + "]";
  }

}
TOP

Related Classes of org.platformlayer.service.cloud.direct.ops.DirectCloudController

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.