Import scripts from old repository
diff --git a/onoslib.py b/onoslib.py
new file mode 100644
index 0000000..138b071
--- /dev/null
+++ b/onoslib.py
@@ -0,0 +1,70 @@
+"""
+Libraries for using ONOS from within Mininet.
+"""
+
+from mininet.node import OVSBridge
+from mininet.util import netParse, ipStr
+import os, sys, imp
+
+# Import the ONOS classes from onos.py in the ONOS repository
+if not 'ONOS_ROOT' in os.environ:
+ print 'ONOS_ROOT is not set.'
+ print 'Try running the script with \'sudo -E\' to pass your environment in.'
+ sys.exit(1)
+
+onos_path = os.path.join(os.path.abspath(os.environ['ONOS_ROOT']), 'tools/test/topos/onos.py')
+onos = imp.load_source('onos', onos_path)
+from onos import ONOS
+
+class ONOSHostCluster(object):
+ def __init__(self, controlSubnet='192.168.1.0/24', numInstances=1, basename='ONOS',
+ features=[]):
+ self.controlSubnet = controlSubnet
+ self.numInstances = numInstances
+ self.basename = basename
+ self.instances = []
+ self.features = features
+
+ def create(self, topology):
+ cs0 = topology.addSwitch('cs0', cls=OVSBridge)
+
+ ctrlIp, ctrlPrefixLen = netParse(self.controlSubnet)
+
+ for i in range(1, self.numInstances + 1):
+ strCtrlIp = '%s/%i' % (ipStr(ctrlIp + i), ctrlPrefixLen)
+
+ c = topology.addHost('%s%s' % (self.basename, i), cls=ONOS, inNamespace=True,
+ ip=strCtrlIp,
+ features=['onos-app-config', 'onos-app-proxyarp',
+ 'onos-core'] + self.features,
+ reactive=False)
+
+ topology.addLink(c, cs0, params1={ 'ip' : strCtrlIp })
+
+ self.instances.append(c)
+
+ # Connect switch to root namespace so that data network
+ # switches will be able to talk to us
+ highestIp = '%s/%i' % (ipStr(ctrlIp + (2 ** (32 - ctrlPrefixLen)) - 2), ctrlPrefixLen)
+ root = topology.addHost('root', inNamespace=False, ip=highestIp)
+ topology.addLink(root, cs0)
+
+class ONOSHostSdnipCluster(ONOSHostCluster):
+
+ def __init__(self, dataSubnet='10.0.0.0/24', features=['onos-app-sdnip'], **kwargs):
+ super(ONOSHostSdnipCluster, self).__init__(features=features, **kwargs)
+
+ self.dataSubnet = dataSubnet
+
+ def create(self, topology):
+ super(ONOSHostSdnipCluster, self).create(topology)
+
+ cs1 = topology.addSwitch('cs1', cls=OVSBridge)
+
+ dataIp, dataPrefixLen = netParse(self.dataSubnet)
+ for i in range(1, len(self.instances) + 1):
+ c = self.instances[i-1]
+ strDataIp = '%s/%i' % (ipStr(dataIp + i), dataPrefixLen)
+ topology.addLink(c, cs1, params1={ 'ip' : strDataIp })
+
+ return cs1
\ No newline at end of file