From 65c35b659505f7deff4c1579bd0072be6676934d Mon Sep 17 00:00:00 2001 From: ryanc Date: Tue, 26 Feb 2013 21:12:33 -0800 Subject: [PATCH] Remove networkx dependency Conflicts: util/install.sh closes #100 --- debian/control | 4 +--- mininet/topo.py | 28 +++++++++++++++++++++++----- setup.py | 3 +-- util/install.sh | 7 +------ 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/debian/control b/debian/control index bde8bf2..e2297ae 100644 --- a/debian/control +++ b/debian/control @@ -9,15 +9,13 @@ Build-Depends: help2man, python-dev, python-pkg-resources, - python-setuptools, - python-networkx + python-setuptools Homepage: http://openflow.org/mininet Package: mininet Architecture: any Depends: openvswitch-switch, - python-networkx, telnet, ${misc:Depends}, ${python:Depends}, diff --git a/mininet/topo.py b/mininet/topo.py index fff9604..3ff0e8e 100644 --- a/mininet/topo.py +++ b/mininet/topo.py @@ -11,13 +11,31 @@ A Topo object can be a topology database for NOX, can represent a physical setup for testing, and can even be emulated with the Mininet package. ''' -# BL: we may have to fix compatibility here. -# networkx is also a fairly heavyweight dependency -# from networkx.classes.graph import Graph - -from networkx import Graph from mininet.util import irange, natural, naturalSeq +class Graph(object): + "Utility class to track nodes and edges " + + def __init__(self): + self.data = {} + + def add_node(self,node): + if node not in self.data.keys(): + self.data[node] = [] + + def add_edge(self,src,dest): + self.add_node(src) + self.add_node(dest) + self.data[src].append(dest) + + def nodes(self): + return self.data.keys() + + def edges(self): + for src in self.data.keys(): + for dest in self.data[src]: + yield (src,dest) + class Topo(object): "Data center network representation for structured multi-trees." diff --git a/setup.py b/setup.py index 3f9f0eb..9cee655 100644 --- a/setup.py +++ b/setup.py @@ -37,8 +37,7 @@ setup( keywords='networking emulator protocol Internet OpenFlow SDN', license='BSD', install_requires=[ - 'setuptools', - 'networkx' + 'setuptools' ], scripts=scripts, ) diff --git a/util/install.sh b/util/install.sh index 255ca3c..a1d0b1d 100755 --- a/util/install.sh +++ b/util/install.sh @@ -123,14 +123,9 @@ function kernel_clean { function mn_deps { echo "Installing Mininet dependencies" $install gcc make socat psmisc xterm ssh iperf iproute telnet \ - python-setuptools python-networkx cgroup-bin ethtool help2man \ + python-setuptools cgroup-bin ethtool help2man \ pyflakes pylint pep8 - if [ "$DIST" = "Ubuntu" ] && [ "$RELEASE" = "10.04" ]; then - echo "Upgrading networkx to avoid deprecation warning" - sudo easy_install --upgrade networkx - fi - # Add sysctl parameters as noted in the INSTALL file to increase kernel # limits to support larger setups: if ! grep Mininet /etc/sysctl.conf; then