Package org.platformlayer.service.cloud.openstack.ops

Source Code of org.platformlayer.service.cloud.openstack.ops.OpenstackInstanceController

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

import java.io.IOException;

import javax.inject.Inject;

import org.platformlayer.core.model.Tag;
import org.platformlayer.core.model.TagChanges;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.OpsProvider;
import org.platformlayer.ops.instances.ImageFactory;
import org.platformlayer.ops.tagger.Tagger;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.service.cloud.openstack.model.OpenstackInstance;
import org.platformlayer.service.cloud.openstack.ops.openstack.OpenstackComputeMachine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class OpenstackInstanceController extends OpsTreeBase {

  private static final Logger log = LoggerFactory.getLogger(OpenstackInstanceController.class);

  @Handler
  public void handler() throws OpsException, IOException {
  }

  @Inject
  ImageFactory imageFactory;

  @Override
  protected void addChildren() throws OpsException {
    final OpenstackInstance model = OpsContext.get().getInstance(OpenstackInstance.class);

    CloudInstanceMapper instance;
    {
      instance = injected(CloudInstanceMapper.class);
      instance.instance = model;
      addChild(instance);
    }

    {
      OpsProvider<TagChanges> tagChanges = new OpsProvider<TagChanges>() {
        @Override
        public TagChanges get() {
          OpenstackComputeMachine machine = OpsContext.get().getInstance(OpenstackComputeMachine.class);

          TagChanges tagChanges = new TagChanges();
          tagChanges.addTags.add(Tag.INSTANCE_KEY.build(model.getKey()));
          tagChanges.addTags.addAll(machine.buildAddressTags());

          return tagChanges;
        }
      };

      instance.addChild(Tagger.build(model, tagChanges));
    }

    // Note: We can't bootstrap an instance, because we can't log in to it,
    // because the public key is not our service's public key

    // if (model.publicPorts != null) {
    // for (int publicPort : model.publicPorts) {
    // PublicPorts publicPortForward = injected(PublicPorts.class);
    // publicPortForward.port = publicPort;
    // publicPortForward.backendItem = model;
    // kvm.addChild(publicPortForward);
    // }
    // }
  }
}
TOP

Related Classes of org.platformlayer.service.cloud.openstack.ops.OpenstackInstanceController

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.