Package org.platformlayer.ops.networks

Source Code of org.platformlayer.ops.networks.NetworkPoints

package org.platformlayer.ops.networks;

import java.net.InetAddress;
import java.util.List;

import javax.inject.Inject;

import org.platformlayer.InetAddressChooser;
import org.platformlayer.core.model.ItemBase;
import org.platformlayer.ops.Machine;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.helpers.InstanceHelpers;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;

public class NetworkPoints {
  private static final Logger log = LoggerFactory.getLogger(NetworkPoints.class);

  @Inject
  InstanceHelpers instances;

  public List<NetworkPoint> resolveAll(List<? extends ItemBase> items, boolean ignoreErrors) throws OpsException {
    List<NetworkPoint> points = Lists.newArrayList();
    for (ItemBase item : items) {
      NetworkPoint point = findNetworkPoint(item);
      if (point == null) {
        if (ignoreErrors) {
          log.debug("Ignoring unresolvable item");
        } else {
          throw new OpsException("Unable to resolve item: " + item.getKey());
        }
      }
      points.add(point);
    }
    return points;
  }

  public NetworkPoint getNetworkPoint(ItemBase item) throws OpsException {
    NetworkPoint networkPoint = findNetworkPoint(item);
    if (networkPoint == null) {
      throw new OpsException("Unable to resolve item to machine: " + item.getKey());
    }
    return networkPoint;
  }

  public NetworkPoint findNetworkPoint(ItemBase item) throws OpsException {
    Machine machine = instances.findMachine(item);
    if (machine == null) {
      log.warn("Unable to resolve item to machine: " + item.getKey());
      return null;
    }
    return machine.getNetworkPoint();
  }

  public InetAddress chooseBest(InetAddressChooser inetAddressChooser, NetworkPoint src, List<NetworkPoint> targets)
      throws OpsException {
    List<InetAddress> allAddresses = Lists.newArrayList();
    for (NetworkPoint target : targets) {
      List<InetAddress> findAddresses = target.findAddresses(src);
      allAddresses.addAll(findAddresses);
    }

    return inetAddressChooser.choose(allAddresses);
  }
}
TOP

Related Classes of org.platformlayer.ops.networks.NetworkPoints

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.