Package org.platformlayer.ops.metrics.collectd

Source Code of org.platformlayer.ops.metrics.collectd.CollectdModelBuilder

package org.platformlayer.ops.metrics.collectd;

import java.net.InetAddress;
import java.util.Map;

import javax.inject.Inject;

import org.platformlayer.InetAddressChooser;
import org.platformlayer.core.model.ItemBase;
import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.OpsSystem;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.networks.NetworkPoint;
import org.platformlayer.ops.networks.NetworkPoints;
import org.platformlayer.ops.templates.TemplateDataSource;
import org.platformlayer.service.collectd.model.CollectdService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CollectdModelBuilder implements TemplateDataSource {
  static final Logger log = LoggerFactory.getLogger(CollectdModelBuilder.class);

  @Inject
  PlatformLayerHelpers platformLayer;

  @Inject
  OpsSystem opsSystem;

  @Inject
  NetworkPoints network;

  @Override
  public void buildTemplateModel(Map<String, Object> model) throws OpsException {
    model.put("collectdServer", getCollectdServer());
    model.put("collectdHostname", getCollectdHostKey());
  }

  private String getCollectdHostKey() {
    // TODO: Multiple machines per service
    ItemBase managed = OpsContext.get().getInstance(ItemBase.class);
    PlatformLayerKey modelKey = managed.getKey();
    return CollectdHelpers.toCollectdKey(modelKey);
  }

  @Deprecated
  public String getCollectdServer() throws OpsException {
    Iterable<CollectdService> collectdServices = platformLayer.listItems(CollectdService.class);
    for (CollectdService collectdService : collectdServices) {
      // TODO: Use DNS name when it works

      NetworkPoint target = network.getNetworkPoint(collectdService);

      if (target != null) {
        NetworkPoint targetNetworkPoint = NetworkPoint.forTargetInContext();
        InetAddress address = target.findBestAddress(targetNetworkPoint, InetAddressChooser.preferIpv6());
        if (address != null) {
          return address.getHostAddress();
        }
      }
    }

    log.warn("Unable to find collectd server; defaulting to 127.0.0.1");
    return "127.0.0.1";
  }
}
TOP

Related Classes of org.platformlayer.ops.metrics.collectd.CollectdModelBuilder

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.