Merging MurphyMc LinearTopo pull request
Fix indentation in LinearTopo()
Reimplemented and corrected Graph as MultiGraphfixes #172
Simplified and refactored examples/dynamicnet.pyExtended LinearTopo to support mulitple hosts per switch
topo: make new minimal Graph object a Graph, not a DiGraph
Fixes another Graph regression relative to NetworkX.
RipL broke because the NetworkX Graph object that was used previouslyfor topologies is an undirected graph:
import networkx as nxg=nx.Graph()...
import networkx as nxg=nx.Graph()...
topo: add getitem for Graph
Commit 65c35b65 'Remove networkx dependency' broke this line from RipL:
nodes = [n for n in self.g[name] if self.layer(n) layer]
To work around this, RipL code would have to be changed to somethinglike this:
nodes = [n for n in self.g.data[name] if self.layer(n) layer]...
topo: Add host count param to LinearTopo
Previously, LinearTopo took one parameter (k), which controlled the numberof switches; each of these got one host. This adds a second parameter (j),which controls the number of hosts per switch, defaulting to 1 (as before)....
Edits to pass code check and make style consistent.
Remove networkx dependency
pep8: Fix E127 continuation line over-indented
There are a bunch of these remaining, but I don't think the right course isto 'fix' all of them to make pep8 happy, but instead to either changethe test in pep8 to consider that a continuation line may itself...
rename Topo() methods for consistency: add_node() -> addNode()
Add setLinkInfo() which seems to be missing.
Removed unused param in add_link.
Simplify port specification.
For the moment, I've removed the ability to specifya dict of options without using **. This is a slightlyunfortunate trade-off since it simplifies implementationat the expense of making the API slightly less convenient(if somewhat more consistent.)
Fix is_switch() to always succeed + whitespace edits.
Attempt at revised/simplified topo class:
- keys are strings- metadata is simply a dict- buildFromTopo greatly simplified
Fix codecheck and MininetWithControlNet.
Add support for specifying host IP range with --ipbase.
Get rid of SWITCH_PORT_BASE since it's 1 for OF >= 1.0.
Remove unused imports.
Remove default classes since Mininet() really handles them.
Clarify precedence of default classes.
Intf and Link classes. Latter support bandwidth limits using tc.
Changed networkx import line; we may have to deal with version issues here.
Pass make codecheck.
mininet.node.SWITCH_PORT_BASE specifies first switch port number.
This should be mostly cosmetic, but it causes switches to numbertheir ports consistently with OpenFlow 1.0, which starts at 1.For older versions of OpenFlow, SWITCH_PORT_BASE may be set to zero.
Added two spaces before in-line # comments.
Removed underscores for public Node methods. Minor cleanup & comments.
Revamp custom topology input
Defining custom topologies, switch types, controllers, and hosts is nowmuch easier. Plus, all Ripcord-specific stuff has been moved out.
Add static code checking for style and errors
This required a change to logging, which now uses a singleton pattern.
For all future checkins, 'make codecheck' should pass.
Add reversed version of the SingleSwitch topology
Possibly useful for adding custom port mappings.
Make Ripcord-specific topologies optional
If ripcord.dctopo imports properly, then include its topologies in thelist of available ones. Also replace topo.py with new generictopologies and update paths.
Support more topologies
Add MAC auto set for switches
Also use indexing for DPIDs to avoid zeroed MAC
Move TreeNet to new Mininet API
Also remove all non-object-oriented legacy Mininet code and updatetests.
User-space compatibility is untested, but most of the code for it isstill in.