Package org.platformlayer.service.gerrit.ops

Source Code of org.platformlayer.service.gerrit.ops.GerritServiceController

package org.platformlayer.service.gerrit.ops;

import java.io.File;
import java.util.List;

import javax.inject.Inject;

import org.platformlayer.ops.Bound;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.filesystem.ManagedDirectory;
import org.platformlayer.ops.instances.InstanceBuilder;
import org.platformlayer.ops.metrics.MetricsInstance;
import org.platformlayer.ops.networks.HasPorts;
import org.platformlayer.ops.networks.PublicEndpoint;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.service.gerrit.model.GerritService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;

public class GerritServiceController extends OpsTreeBase implements HasPorts {

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

  @Bound
  public GerritService model;

  @Inject
  GerritTemplate template;

  @Handler
  public void handler() {
  }

  @Override
  protected void addChildren() throws OpsException {
    // GerritInstanceModel template = injected(GerritInstanceModel.class);
    // GerritService model = template.getModel();

    String dnsName = model.dnsName;

    List<Integer> ports = getPorts();

    InstanceBuilder vm;
    {
      vm = InstanceBuilder.build(dnsName, this, model.getTags());
      vm.publicPorts.addAll(ports);
      vm.hostPolicy.configureCluster(template.getPlacementKey());

      // TODO: This needs to be configurable (?)
      vm.minimumMemoryMb = 2048;

      addChild(vm);
    }

    {
      GerritInstall install = vm.addChild(GerritInstall.class);
    }

    // Bootstrap depends on configuration file
    vm.addChild(ManagedDirectory.build(template.getDataDir(), "700").setOwner(template.getUser())
        .setGroup(template.getGroup()));
    vm.addChild(ManagedDirectory.build(new File(template.getDataDir(), "etc"), "700").setOwner(template.getUser())
        .setGroup(template.getGroup()));
    vm.addChild(GerritConfigurationFile.class);

    vm.addChild(GerritBootstrap.class);

    vm.addChild(GerritInstance.class);

    for (int port : ports) {
      PublicEndpoint endpoint = injected(PublicEndpoint.class);
      // endpoint.network = null;
      endpoint.publicPort = port;
      endpoint.backendPort = port;
      endpoint.dnsName = dnsName;

      endpoint.tagItem = model.getKey();
      endpoint.parentItem = model.getKey();

      vm.addChild(endpoint);
    }

    vm.addChild(MetricsInstance.class);
  }

  @Override
  public List<Integer> getPorts() {
    List<Integer> ports = Lists.newArrayList();
    ports.add(template.getWebPort());
    ports.add(template.getSshdPort());
    return ports;
  }
}
TOP

Related Classes of org.platformlayer.service.gerrit.ops.GerritServiceController

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.