Package org.platformlayer.service.zookeeper.ops

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

package org.platformlayer.service.zookeeper.ops;

import java.io.File;

import javax.inject.Inject;

import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.filesystem.ManagedDirectory;
import org.platformlayer.ops.filesystem.SimpleFile;
import org.platformlayer.ops.filesystem.TemplatedFile;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.standardservice.StandardServiceInstance;
import org.platformlayer.service.zookeeper.model.ZookeeperServer;

public class ZookeeperInstance extends StandardServiceInstance {

  @Inject
  PlatformLayerHelpers platformLayer;

  @Override
  protected ZookeeperInstanceModel getTemplate() {
    ZookeeperInstanceModel template = injected(ZookeeperInstanceModel.class);
    return template;
  }

  @Override
  protected void addExtraFiles() throws OpsException {
    ZookeeperInstanceModel template = injected(ZookeeperInstanceModel.class);

    ZookeeperServer model = template.getModel();

    File instanceDir = template.getInstanceDir();

    addChild(ManagedDirectory.build(template.getDataDir(), "0755"));
    addChild(ManagedDirectory.build(template.getLogsDir(), "0755"));

    addChild(TemplatedFile.build(template, new File(template.getDataDir(), "myid")).setFileMode("0755"));

    addChild(SimpleFile.build(getClass(), new File(instanceDir, "log4j.properties")).setFileMode("0444"));
    // addChild(SimpleFile.build(getClass(),
    // new File(instanceDir, "start-zookeeper.sh"))
    // .setFileMode("0555"));

    // TODO: Monitor logs
    // addChild(buildWatchLogFile(getInstanceDir().join("logs/zookeeper.log")));

    // TODO: Add backup
    // {
    // BackupDirectory backup = injected(BackupDirectory.class);
    // backup.itemKey = model.getKey();
    //
    // File jenkinsRoot = new File("/var/lib/jenkins");
    // backup.backupRoot = jenkinsRoot;
    //
    // String[] excludes = { "jobs/*/workspace", "jobs/*/modules",
    // "jobs/*/builds/*/workspace.tar.gz", ".m2/repository" };
    //
    // for (String exclude : excludes) {
    // backup.excludes.add(new File(jenkinsRoot, exclude));
    // }
    //
    // instance.addChild(backup);
    // }

    // We now use IPSEC...
    // {
    // for (ZookeeperServer peer : template.getClusterServers()) {
    // if (Objects.equal(peer.getKey(), model.getKey())) {
    // continue;
    // }
    //
    // for (int systemPort : ZookeeperConstants.SYSTEM_PORTS) {
    // NetworkConnection networkConnection = injected(NetworkConnection.class);
    // networkConnection.setDestItem(peer.getKey());
    // networkConnection.setSourceItem(model.getKey());
    // networkConnection.setPort(systemPort);
    // networkConnection.setProtocol("tcp");
    //
    // networkConnection.getTags().add(Tag.buildParentTag(model.getKey()));
    // Tag uniqueTag = UniqueTag.build(model, peer, String.valueOf(systemPort));
    // networkConnection.getTags().add(uniqueTag);
    //
    // String id = model.clusterId + "-" + peer.clusterId + "-" + systemPort;
    // networkConnection.key = PlatformLayerKey.fromId(id);
    //
    // // Hmmm... when do we embed, and when do we not??
    // // We need some clear rules!
    // // Here, we don't embed because it's cross-machine
    // platformLayer.putItemByTag(networkConnection, uniqueTag);
    // }
    // }
    // }

  }
}
TOP

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

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.