Remove obsolete/confusing onos.py

Change-Id: I21e6dee9164352140cfa50c48904ec8139854c84
diff --git a/tools/test/topos/onos.py b/tools/test/topos/onos.py
deleted file mode 100755
index 82c6682..0000000
--- a/tools/test/topos/onos.py
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/usr/bin/env python
-
-# TODO add onos-app-fwd to features
-# TODO check if service is running... i think this might already be done by mn
-
-from mininet.node import Controller, OVSSwitch, CPULimitedHost, RemoteController
-from mininet.net import Mininet
-from mininet.cli import CLI
-from mininet.topo import LinearTopo, Topo
-from mininet.log import setLogLevel, info, warn
-from mininet.util import quietRun, numCores
-
-from shutil import copyfile
-from os import environ, path
-from functools import partial
-import time
-from sys import argv
-from time import sleep
-from sets import Set
-
-class ONOS( Controller ):
-    "TODO"
-
-    onosDir = '/opt/onos/'
-
-    def __init__( self, name, onosDir=onosDir,
-                  reactive=True, features=[ 'onos-app-tvue' ],
-                  **kwargs ):
-        '''TODO'''
-
-        Controller.__init__( self, name, **kwargs )
-        # the following have been done for us:
-        #self.ip = ip ('127.0.0.1')
-        #self.port = port (6653)
-        #self.protocol = protocol ('tcp')
-        #self.checkListening()
-
-        self.onosDir = onosDir
-        self.karafDir = onosDir + 'apache-karaf-3.0.5/'
-        self.instanceDir = self.karafDir
-
-        # add default modules
-        # TODO: consider an ordered set
-        self.features = Set([ 'webconsole',
-                              'onos-rest',
-                              'onos-api',
-                              'onos-cli',
-                              'onos-openflow' ])
-        self.features.update( features )
-        # add reactive forwarding modules
-        if reactive:
-            self.features.update( ['onos-app-fwd', 
-                                   'onos-app-proxyarp',
-                                   'onos-app-mobility' ] )
-        # add the distributed core if we are in a namespace with no trivial core
-        if self.inNamespace and 'onos-core-trivial' not in self.features:
-            self.features.add( 'onos-core' )
-        # if there is no core, add the trivial one
-        if 'onos-core' not in self.features:
-            self.features.add( 'onos-core-trivial' )
-        print self.features  
-   
-    def start( self ):
-        if self.inNamespace:
-            instanceOpts = ( '-furl mvn:org.onosproject/onos-features/1.7.0-SNAPSHOT/xml/features '
-                             '-s 8101' )
-            if self.ip is not None:
-                instanceOpts += (' -a %s' % self.IP() )
-            self.userCmd( self.karafDir + 'bin/instance create %s %s' % ( instanceOpts, self.name ) )
-            self.instanceDir = self.karafDir + 'instances/%s/' % self.name
-        else:
-            # we are running in the root namespace, so let's use the root instance
-            # clean up the data directory
-            #self.userCmd( 'rm -rf '+ self.karafDir + 'data/' )
-            pass
-
-        self.userCmd( 'rm -rf '+ self.instanceDir + 'data/' )
-
-        # Update etc/org.apache.karaf.features.cfg
-        self.updateFeatures()
-
-        # TODO 2. Update etc/hazelcast.xml : interface lines
-        #cp etc/hazelcast.xml instances/c1/etc/
-        self.updateHazelcast()
-
-        # TODO 3. Update etc/system.properties : onos.ip
-        # TODO 4. Update config/cluster.json : with all nodes
-
-        # start onos
-        self.userCmd( '%sbin/instance start -d %s' % ( self.karafDir, self.name ) )
-        #TODO we should wait for startup...
-
-    def stop( self ):
-        self.userCmd( self.instanceDir + 'bin/stop' )
-        #if self.inNamespace:
-        #    self.userCmd( self.karafDir + 'bin/instance destroy %s' % self.name )
-        self.terminate()
-
-    def updateHazelcast( self ):
-        hz = '192.168.123.*'
-        if self.ip is not None:
-            hz = '.'.join(self.ip.split('.')[:-1]) + '.*'
-
-        readfile = self.karafDir + 'etc/hazelcast.xml'
-        writefile = self.instanceDir + 'etc/hazelcast.xml'
-        with open( readfile, 'r' ) as r:
-            with open( writefile, 'w' ) as w:
-                for line in r.readlines():
-                    if '<interface>' in line:
-                        line = '<interface>' + hz + '</interface>\n'
-                    w.write( line )
-
-    def updateFeatures( self ):
-        filename = self.instanceDir + 'etc/org.apache.karaf.features.cfg'
-        with open( filename, 'r+' ) as f:
-            lines = f.readlines()
-            f.seek(0)
-            f.truncate()
-            for line in lines:
-                #print '?', line,
-                if 'featuresBoot=' in line:
-                    # parse the features from the line
-                    features = line.rstrip().split('=')[1].split(',')
-                    # add the features to our features set
-                    self.features.update( features )
-                    # generate the new features line
-                    line = 'featuresBoot=' + ','.join( self.features ) + '\n'
-                    #print '!', line,
-                f.write( line )
-
-
-    @classmethod
-    def isAvailable( self ):
-        return quietRun( 'ls %s' % self.onosDir )
-
-    def userCmd( self, cmd ):
-        # switch to the non-root user because karaf gets upset otherwise
-        # because the .m2repo is not stored with root
-        cmd = 'sudo -u %s %s' % ( self.findUser(), cmd )
-        return self.cmd( cmd )
-
-    @staticmethod
-    def findUser():
-        "Try to return logged-in (usually non-root) user"
-        try:
-            # If we're running sudo
-            return os.environ[ 'SUDO_USER' ]
-        except:
-            try:
-                # Logged-in user (if we have a tty)
-                return quietRun( 'who am i' ).split()[ 0 ]
-            except:
-                # Give up and return effective user
-                return quietRun( 'whoami' )
- 
-
-class ControlNetwork( Topo ):
-    "Control Network Topology"
-    def __init__( self, n, dataController=ONOS, **kwargs ):
-        """n: number of data network controller nodes
-           dataController: class for data network controllers"""
-        Topo.__init__( self, **kwargs )
-        # Connect everything to a single switch
-        cs0 = self.addSwitch( 'cs0' )
-        # Add hosts which will serve as data network controllers
-        for i in range( 1, n+1 ):
-            c = self.addHost( 'c%s' % i, cls=dataController,
-                              inNamespace=True )
-            self.addLink( c, cs0 )
-        # Connect switch to root namespace so that data network
-        # switches will be able to talk to us
-        root = self.addHost( 'root', inNamespace=False )
-        self.addLink( root, cs0 )
-
-class ONOSCluster( Controller ):
-    # TODO
-    n = 3
-   
-    def start( self ):
-        ctopo = ControlNetwork( n=self.n, dataController=ONOS )
-        self.cnet = Mininet( topo=ctopo, ipBase='192.168.123.0/24', controller=None )
-        self.cnet.addController( 'cc0', controller=Controller )
-        self.cnet.start()
-
-        self.ctrls = []
-        for host in self.cnet.hosts:
-            if isinstance( host, Controller ):
-                self.ctrls.append( host )
-                host.start()
-
-    def stop( self ):
-        for host in self.cnet.hosts:
-            if isinstance( host, Controller ):
-                host.stop()
-        self.cnet.stop()
-        
-    def clist( self ):
-        "Return list of Controller proxies for this ONOS cluster"
-        print 'controllers:', self.ctrls
-        return self.ctrls
-
-class OVSSwitchONOS( OVSSwitch ):
-    "OVS switch which connects to multiple controllers"
-    def start( self, controllers ):
-        assert len( controllers ) == 1
-        c0 = controllers[ 0 ]
-        assert type( c0 ) == ONOSCluster
-        controllers = c0.clist()
-        OVSSwitch.start( self, controllers )
-
-controllers = { 'onos': ONOS }
-switches = { 'ovso': OVSSwitchONOS }
-
-if __name__ == '__main__':
-    # Simple test for ONOS() controller class
-    setLogLevel( 'info' ) #TODO info
-    size = 2 if len( argv ) != 2 else int( argv[ 1 ] )
-    net = Mininet( topo=LinearTopo( size ),
-                   #controller=ONOS,
-                   controller=partial( ONOSCluster, n=3 ), #TODO
-                   switch=OVSSwitchONOS )
-    net.start()
-    #waitConnected( net.switches )
-    CLI( net )
-    net.stop()