Package org.platformlayer.service.network.ops

Source Code of org.platformlayer.service.network.ops.NetworkConnectionController

package org.platformlayer.service.network.ops;

import java.util.List;
import java.util.UUID;

import javax.inject.Inject;

import org.platformlayer.EnumUtils;
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.firewall.Protocol;
import org.platformlayer.ops.firewall.Transport;
import org.platformlayer.ops.helpers.ProviderHelper;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.networks.HasPorts;
import org.platformlayer.ops.tree.OpsTreeBase;
import org.platformlayer.service.network.model.NetworkConnection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;

public class NetworkConnectionController extends OpsTreeBase {

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

  @Inject
  OpsContext ops;

  @Inject
  ProviderHelper providers;

  @Inject
  PlatformLayerHelpers platformLayer;

  @Handler
  public void handler() {
  }

  @Override
  protected void addChildren() throws OpsException {
    NetworkConnection model = ops.getInstance(NetworkConnection.class);

    Protocol protocol = null;
    if (model.protocol != null) {
      protocol = EnumUtils.valueOfCaseInsensitive(Protocol.class, model.protocol);
    }

    Transport transport = null;
    // if (model.transport != null) {
    // protocol = EnumUtils.valueOfCaseInsensitive(Transport.class, model.transport);
    // }

    List<Integer> ports = Lists.newArrayList();
    if (model.port != 0) {
      ports.add(model.port);
      if (model.protocol == null) {
        protocol = Protocol.Tcp;
      }
    } else {
      ItemBase destItem = platformLayer.getItem(model.destItem);
      HasPorts hasPorts = providers.toInterface(destItem, HasPorts.class);

      ports.addAll(hasPorts.getPorts());

      if (model.protocol == null) {
        // TODO: Support UDP?
        protocol = Protocol.Tcp;
      }
    }

    UUID uniqueId = platformLayer.getOrCreateUuid(model);

    for (int port : ports) {
      PlatformLayerFirewallEntry net = injected(PlatformLayerFirewallEntry.class);
      net.destItem = model.destItem;
      net.port = port;
      net.sourceItemKey = model.sourceItem;
      net.sourceCidr = model.sourceCidr;
      net.protocol = protocol;
      net.transport = transport;

      net.uniqueId = port + "-" + uniqueId.toString();

      addChild(net);
    }
  }
}
TOP

Related Classes of org.platformlayer.service.network.ops.NetworkConnectionController

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.