* Moved all l2 forwarding services based on OF to a separate OSGi
[affinity.git] / nfchainagent / src / main / java / org / opendaylight / affinity / nfchainagent / NFchainAgent.java
diff --git a/nfchainagent/src/main/java/org/opendaylight/affinity/nfchainagent/NFchainAgent.java b/nfchainagent/src/main/java/org/opendaylight/affinity/nfchainagent/NFchainAgent.java
deleted file mode 100644 (file)
index ebabdaa..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Copyright (c) 2013 Plexxi, Inc.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-
-package org.opendaylight.affinity.nfchainagent;
-
-import java.lang.Short;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import org.opendaylight.controller.sal.utils.NetUtils;
-import org.opendaylight.controller.sal.utils.Status;
-import org.opendaylight.controller.sal.utils.StatusCode;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.opendaylight.affinity.affinity.IAffinityManager;
-import org.opendaylight.controller.hosttracker.IfIptoHost;
-import org.opendaylight.controller.hosttracker.hostAware.HostNodeConnector;
-import org.opendaylight.controller.sal.core.Host;
-import org.opendaylight.controller.sal.core.Node;
-import org.opendaylight.controller.sal.core.NodeConnector;
-import org.opendaylight.controller.sal.flowprogrammer.Flow;
-import org.opendaylight.controller.sal.flowprogrammer.IFlowProgrammerService;
-import org.opendaylight.controller.sal.action.Action;
-import org.opendaylight.controller.sal.action.Output;
-import org.opendaylight.controller.sal.match.Match;
-import org.opendaylight.controller.sal.match.MatchField;
-import org.opendaylight.controller.sal.match.MatchType;
-import org.opendaylight.controller.sal.packet.address.EthernetAddress;
-
-import org.opendaylight.affinity.l2agent.IfL2Agent;
-import org.opendaylight.controller.switchmanager.ISwitchManager;
-
-import java.io.Serializable;
-
-public class NFchainAgent implements Serializable {
-
-    private static final Logger log = LoggerFactory.getLogger(NFchainAgent.class);
-    private IFlowProgrammerService programmer = null;    
-    private IfL2Agent l2agent = null;
-    private IfIptoHost hostTracker = null;
-    private ISwitchManager switchManager = null;
-    
-    private HashMap<String, NFchainconfig> allconfigs;
-
-    void init() {
-        log.debug("INIT called!");
-    }
-
-    void destroy() {
-        log.debug("DESTROY called!");
-    }
-
-    void start() {
-        log.debug("START called!");
-    }
-
-    void started(){
-    }
-
-    void stop() {
-        log.debug("STOP called!");
-    }
-
-    void setHostTracker(IfIptoHost h) {
-        log.info("Setting hosttracker {}", h);
-        this.hostTracker = h;
-    }
-
-    void unsetHostTracker(IfIptoHost h) {
-        if (this.hostTracker.equals(h)) {
-            this.hostTracker = null;
-        }
-    }
-    public void setFlowProgrammerService(IFlowProgrammerService s)
-    {
-        this.programmer = s;
-    }
-
-    public void unsetFlowProgrammerService(IFlowProgrammerService s) {
-        if (this.programmer == s) {
-            this.programmer = null;
-        }
-    }
-    void setL2Agent(IfL2Agent s)
-    {
-        log.info("Setting l2agent {}", s);
-        this.l2agent = s;
-    }
-
-    void unsetL2Agent(IfL2Agent s) {
-        if (this.l2agent == s) {
-            this.l2agent = null;
-        }
-    }
-
-    void setSwitchManager(ISwitchManager s)
-    {
-        this.switchManager = s;
-    }
-
-    void unsetSwitchManager(ISwitchManager s) {
-        if (this.switchManager == s) {
-            this.switchManager = null;
-        }
-    }
-
-    public Status addNfchain(String key, NFchainconfig nfcc) {
-       String name;
-
-        if (allconfigs == null) {
-            allconfigs = new HashMap<String, NFchainconfig>();
-        }
-        /* xxx compute changelist and push flow changes. */
-       if (allconfigs.containsKey(key)) {
-           return new Status(StatusCode.CONFLICT,
-                             "NFchain with the specified name already configured.");
-       } 
-       NFchainconfig oldcfg = allconfigs.get(key);
-       if (oldcfg == null) {
-           if (allconfigs.put(key, nfcc) == null) {
-                return new Status(StatusCode.SUCCESS); 
-           } 
-       }
-        return new Status(StatusCode.CONFLICT,
-                          "Unknown error during addNFchain.");
-    }
-
-    /** 
-     * add flow rules for set of flows in nfchainconfig. Do this for
-     * each node connector in the network proactively.
-     */
-    public Status addrules(Node node, NFchainconfig nfcc) throws Exception {
-        List<Flow> flowlist = nfcc.getFlowList();
-        for (Flow f: flowlist) {
-            HostNodeConnector wphost = (HostNodeConnector) hostTracker.hostFind(nfcc.getWaypointIP()); 
-            List<Action> actions = new ArrayList<Action>();
-            /* Look up the output port leading to the waypoint. */
-            NodeConnector dst_connector = l2agent.lookup_output_port(node, wphost.getDataLayerAddressBytes());
-
-            log.debug("Waypoint direction added: node {} and connector {}", node, dst_connector);
-            if (dst_connector != null) {
-                f.setActions(actions);
-                f.addAction(new Output(dst_connector));
-                log.debug("flow push add flow = {} to node = {} ", f, node);
-                Status status = programmer.addFlow(node, f);
-                if (!status.isSuccess()) {
-                    log.debug("Error during addFlow: {} on {}. The failure is: {}",
-                              f, node, status.getDescription());
-                }
-            }
-        }
-        return new Status(StatusCode.SUCCESS); 
-    }
-
-
-
-    /** 
-     * remove flow rules for set of flows in nfchainconfig. Do this for
-     * each node connector in the network proactively.
-     */
-    public Status removerules(Node node, NFchainconfig nfcc) throws Exception {
-        List<Flow> flowlist = nfcc.getFlowList();
-        for (Flow f: flowlist) {
-            HostNodeConnector wphost = (HostNodeConnector) hostTracker.hostFind(nfcc.getWaypointIP()); 
-            List<Action> actions = new ArrayList<Action>();
-            /* Look up the output port leading to the waypoint. */
-            NodeConnector dst_connector = l2agent.lookup_output_port(node, wphost.getDataLayerAddressBytes());
-
-            log.debug("Waypoint settings removed: node {} and connector {}", node, dst_connector);
-            if (dst_connector != null) {
-                f.setActions(actions);
-                f.addAction(new Output(dst_connector));
-                log.debug("flow push remove flow = {} to node = {} ", f, node);
-                Status status = programmer.removeFlow(node, f);
-                if (!status.isSuccess()) {
-                    log.debug("Error during removeFlow: {} on {}. The failure is: {}",
-                              f, node, status.getDescription());
-                }
-            }
-        }
-        return new Status(StatusCode.SUCCESS); 
-    }
-
-
-    public Status removeNfchain(String key) {
-        if (allconfigs != null) {
-            allconfigs.remove(key);
-        }
-        return new Status(StatusCode.SUCCESS); 
-    }
-
-    /** 
-     * Enable the nfchain by programming flow rules on its behalf. 
-     */
-    public Status enable(String cfgname) throws Exception {
-        /* Get all node connectors. */
-        Set<Node> nodes = switchManager.getNodes();
-        NFchainconfig cfg = allconfigs.get(cfgname);
-
-        Status success = new Status(StatusCode.SUCCESS);
-        Status notfound = new Status(StatusCode.NOTFOUND);
-        Status ret;
-
-        if (nodes == null) {
-            log.debug("No nodes in network.");
-            return success;
-        } 
-
-        /* Send this flow rule to all nodes in the network. */
-        for (Node node: nodes) {
-            ret = addrules(node, cfg);
-        }
-        return new Status(StatusCode.SUCCESS);         
-    }
-
-    /** 
-     * Remove openflow rules added earlier. Restore default routing via standard L2 learning methods. 
-     */
-    public Status disable(String cfgname) throws Exception {
-        /* Get all node connectors. */
-        Set<Node> nodes = switchManager.getNodes();
-        NFchainconfig cfg = allconfigs.get(cfgname);
-
-        Status success = new Status(StatusCode.SUCCESS);
-        Status notfound = new Status(StatusCode.NOTFOUND);
-        Status ret;
-
-        if (nodes == null) {
-            log.debug("No nodes in network.");
-            return success;
-        } 
-
-        /* Send this flow rule to all nodes in the network. */
-        for (Node node: nodes) {
-            ret = removerules(node, cfg);
-        }
-        return new Status(StatusCode.SUCCESS);         
-    }
-}
-