Package org.platformlayer.ops.tagger

Source Code of org.platformlayer.ops.tagger.TagFromChildren

package org.platformlayer.ops.tagger;

import java.util.List;

import javax.inject.Inject;

import org.platformlayer.core.model.EndpointInfo;
import org.platformlayer.core.model.ItemBase;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.ops.tree.OwnedItem;

public class TagFromChildren {
  public ItemBase parentItem;
  public OpsTreeBase parentController;
  // public Class<? extends OwnedItem> ownedItemType;
  public Integer port = null;

  @Inject
  PlatformLayerHelpers platformLayer;

  @Handler
  public void handler() throws OpsException {
    if (OpsContext.isConfigure()) {
      for (OwnedItem<?> childServer : parentController.getChildren(OwnedItem.class)) {
        ItemBase server = childServer.getItem();
        if (server == null) {
          // TODO: It's _possible_ that the child is ready instantly.
          // Right now, we have to go through a retry cycle
          throw new OpsException("Child server not ready");
        }
        List<EndpointInfo> endpoints = EndpointInfo.findEndpoints(server.getTags(), port);
        if (endpoints.isEmpty()) {
          // TODO: Cope in future e.g. if we only need one of two in a cluster
          throw new OpsException("Child server not ready");
        }

        // if (endpoints.size() != 1) {
        // throw new OpsException("Expected exactly one endpoint");
        // }

        for (EndpointInfo endpoint : endpoints) {
          platformLayer.addTag(parentItem.getKey(), endpoint.toTag());
        }
      }
    }
  }
}
TOP

Related Classes of org.platformlayer.ops.tagger.TagFromChildren

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.