Package org.platformlayer.service.zookeeper.ops

Source Code of org.platformlayer.service.zookeeper.ops.ZookeeperClusterController

package org.platformlayer.service.zookeeper.ops;

import java.util.List;

import javax.inject.Inject;

import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.core.model.Tag;
import org.platformlayer.ops.Bound;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.Machine;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.UniqueTag;
import org.platformlayer.ops.helpers.InstanceHelpers;
import org.platformlayer.ops.helpers.MachineCluster;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.tagger.TagFromChildren;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.ops.tree.OwnedItem;
import org.platformlayer.service.zookeeper.model.ZookeeperCluster;
import org.platformlayer.service.zookeeper.model.ZookeeperServer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;

public class ZookeeperClusterController extends OpsTreeBase implements MachineCluster {

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

  @Inject
  PlatformLayerHelpers platformLayer;

  @Inject
  InstanceHelpers instances;

  @Bound
  ZookeeperCluster model;

  @Inject
  ZookeeperUtils zookeeper;

  @Handler
  public void handler() throws OpsException {

  }

  static class ZookeeperChildServer extends OwnedItem<ZookeeperServer> {
    ZookeeperCluster cluster;
    String clusterId;

    @Override
    protected ZookeeperServer buildItemTemplate() throws OpsException {
      Tag parentTag = Tag.buildParentTag(cluster.getKey());

      ZookeeperServer server = new ZookeeperServer();

      server.clusterDnsName = cluster.dnsName;
      server.clusterId = clusterId;

      Tag uniqueTag = UniqueTag.build(cluster, clusterId);
      server.getTags().add(uniqueTag);
      server.getTags().add(parentTag);

      server.key = PlatformLayerKey.fromId(cluster.getId() + "-" + clusterId);

      return server;
    }
  }

  @Override
  protected void addChildren() throws OpsException {
    for (int i = 0; i < model.clusterSize; i++) {
      ZookeeperChildServer childServer = addChild(ZookeeperChildServer.class);
      childServer.cluster = model;
      childServer.clusterId = String.valueOf(i);
    }

    {
      TagFromChildren tagger = addChild(TagFromChildren.class);
      tagger.parentItem = model;
      tagger.parentController = this;
      // tagger.ownedItemType = ZookeeperChildServer.class;
      tagger.port = ZookeeperConstants.ZK_PUBLIC_PORT;
    }
  }

  @Override
  public List<Machine> getMachines(boolean required) throws OpsException {
    List<Machine> machines = Lists.newArrayList();

    for (ZookeeperServer server : zookeeper.getServers(model)) {
      Machine machine = instances.getMachine(server, required);
      if (machine != null) {
        machines.add(machine);
      }
    }

    return machines;
  }
}
TOP

Related Classes of org.platformlayer.service.zookeeper.ops.ZookeeperClusterController

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.