adding TestON
diff --git a/TestON/drivers/common/cli/remotetestbed/__init__.py b/TestON/drivers/common/cli/remotetestbed/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/__init__.py
diff --git a/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py b/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py
new file mode 100644
index 0000000..8b25b2f
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/floodlightclidriver.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+'''
+Created on 12-Feb-2013
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
+
+
+    TestON is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    TestON is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with TestON.  If not, see <http://www.gnu.org/licenses/>.		
+
+
+FloodLightCliDriver is the basic driver which will handle the Mininet functions
+'''
+
+import pexpect
+import struct
+import fcntl
+import os
+import signal
+import re
+import sys
+import time
+
+sys.path.append("../")
+
+from drivers.common.cli.remotetestbeddriver import RemoteTestBedDriver
+
+class FloodLightCliDriver(RemoteTestBedDriver):
+    '''
+        FloodLightCliDriver is the basic driver which will handle the Mininet functions
+    '''
+    def __init__(self):
+        super(RemoteTestBedDriver, self).__init__()
+        
+    def connect(self,**connectargs):
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+        
+        self.name = self.options['name']
+
+        self.handle = super(FloodLightCliDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+        if self.handle :
+            main.log.info("Connected "+self.name)
+            self.execute(cmd="\r",prompt="\$",timeout=10)
+            self.execute(cmd="cd /home/openflow/floodlight/",prompt="floodlight\$",timeout=3)
+            self.execute(cmd="java -jar target/floodlight.jar &",prompt="\$",timeout=3)
+            self.execute(cmd="\r",prompt="\$",timeout=10)
+            return self.handle
+        else :
+            return main.FALSE
diff --git a/TestON/drivers/common/cli/remotetestbed/flowvisorclidriver.py b/TestON/drivers/common/cli/remotetestbed/flowvisorclidriver.py
new file mode 100644
index 0000000..936ce9d
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/flowvisorclidriver.py
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+'''
+Created on 12-Feb-2013
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
+
+
+    TestON is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    TestON is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with TestON.  If not, see <http://www.gnu.org/licenses/>.		
+
+
+FlowVisorCliDriver is the basic driver which will handle the Mininet functions
+'''
+
+import pexpect
+import struct
+import fcntl
+import os
+import signal
+import re
+import sys
+import time
+
+sys.path.append("../")
+
+from drivers.common.cli.remotetestbeddriver import RemoteTestBedDriver
+
+class FlowVisorCliDriver(RemoteTestBedDriver):
+    '''
+        FlowVisorCliDriver is the basic driver which will handle the Mininet functions
+    '''
+    def __init__(self):
+        super(RemoteTestBedDriver, self).__init__()
+        
+    def connect(self,**connectargs):
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+        
+        self.name = self.options['name']
+
+        self.handle = super(FlowVisorCliDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+        if self.handle :
+            main.log.info(self.name+" connected successfully")
+            return self.handle
+        else :
+            main.log.error("Failed to connect "+self.name)
+            return main.FALSE
+    
+    def removeFlowSpace(self,id):
+        if id == "all":
+            flow_space = self.listFlowSpace()
+            flow_ids = re.findall("\,id=\[(\d+)\]", flow_space)
+            for id in flow_ids :
+                self.removeFlowSpace(id)
+        else :
+            self.execute(cmd="clear",prompt="\$",timeout=10)
+            self.execute(cmd="fvctl removeFlowSpace "+id,prompt="passwd:",timeout=10)
+            self.execute(cmd="\r",prompt="\$",timeout=10)
+            main.log.info("Removed flowSpace which is having id :"+id)
+            
+        return main.TRUE
+        
+    def addFlowSpace(self,flow_space):
+        self.execute(cmd="clear",prompt="\$",timeout=10)
+        self.execute(cmd="fvctl addFlowSpace "+flow_space,prompt="passwd:",timeout=10)
+        self.execute(cmd="\r",prompt="\$",timeout=10)
+        sucess_match = re.search("success\:\s+(\d+)", main.last_response)
+        if sucess_match :
+            main.log.info("Added flow Space and id is "+sucess_match.group(1))
+            return main.TRUE
+        else :
+            return main.FALSE
+    
+    def listFlowSpace(self):
+        self.execute(cmd="clear",prompt="\$",timeout=10)
+        self.execute(cmd="fvctl listFlowSpace ",prompt="passwd:",timeout=10)
+        self.execute(cmd="\r",prompt="\$",timeout=10)
+        flow_space = main.last_response
+        flow_space = self.remove_contol_chars( flow_space)
+        flow_space = re.sub("rule\s(\d+)\:", "\nrule "+r'\1'+":",flow_space)
+        #main.log.info(flow_space)
+        
+        return main.TRUE
+        
+    def listDevices(self):
+        self.execute(cmd="clear",prompt="\$",timeout=10)
+        self.execute(cmd="fvctl listDevices ",prompt="passwd:",timeout=10)
+        self.execute(cmd="\r",prompt="\$",timeout=10)
+        devices_list = ''
+        last_response = re.findall("(Device\s\d+\:\s((\d|[a-z])(\d|[a-z])\:)+(\d|[a-z])(\d|[a-z]))", main.last_response)
+        
+        for resp in last_response :
+            devices_match = re.search("(Device\s\d+\:\s((\d|[a-z])(\d|[a-z])\:)+(\d|[a-z])(\d|[a-z]))", str(resp))
+            if devices_match:
+                devices_list = devices_list+devices_match.group(0)+"\n"
+        main.log.info("List of Devices \n"+devices_list)  
+        return main.TRUE
+    
+    
+    
diff --git a/TestON/drivers/common/cli/remotetestbed/hpswitchclidriver.py b/TestON/drivers/common/cli/remotetestbed/hpswitchclidriver.py
new file mode 100644
index 0000000..24d9696
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/hpswitchclidriver.py
@@ -0,0 +1,230 @@
+#!/usr/bin/env python
+'''
+Created on 24-June-2013 
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)      
+
+    TestON is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    TestON is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with TestON.  If not, see <http://www.gnu.org/licenses/>.        
+
+
+''' 
+import time
+import pexpect
+import struct, fcntl, os, sys, signal
+import sys
+import re
+sys.path.append("../")
+from drivers.common.clidriver import CLI
+
+class HPSwitch(CLI):
+    
+    def __init__(self):
+        super(CLI, self).__init__()
+        
+    def connect(self,**connectargs):
+        for key in connectargs:
+           vars(self)[key] = connectargs[key]
+
+        self.name = self.options['name']
+        self.handle = super(HPSwitch,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+
+        return main.TRUE
+
+    def configure(self):
+        self.execute(cmd='configure', prompt = '\(config\)',timeout = 3)
+        if re.search('\(config\)', main.last_response):
+            main.log.info("Configure mode enabled"+main.last_response)
+        else : 
+            main.log.warn("Fail to enable configure mode"+main.last_response)
+        
+
+    def set_up_vlan(self,**vlanargs):
+        '''
+        Configure vlan.
+        '''
+        for key in vlanargs:
+           vars(self)[key] = vlanargs[key]
+           
+        self.execute(cmd='vlan '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
+        if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
+            main.log.info("Configuring VLAN "+self.vlan_id)
+        else : 
+            main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
+            return main.FALSE
+        
+        if self.vlan_name :
+            self.execute(cmd='name '+self.vlan_name, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
+            if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
+                main.log.info("Configuring "+self.vlan_id)
+                return main.TRUE
+            else : 
+                main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
+                return main.FALSE
+        else :
+            main.log.error("Vlan Name not specified")
+            return main.FALSE
+        
+    def vlan_tagged(self, **taggedargs):
+        for key in taggedargs:
+           vars(self)[key] = taggedargs[key]
+        if self.vlan_id :
+            self.execute(cmd='vlan '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
+            
+            if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
+                main.log.info("Configuring "+self.vlan_id)
+            else : 
+                main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
+                return main.FALSE
+            if self.tagged :
+                self.execute(cmd='tagged '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
+                if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
+                    main.log.info("VLAN tagged done "+self.tagged)
+                    return main.TRUE
+                else : 
+                    main.log.warn("Fail to tagged Vlan"+self.vlan_id+main.last_response)
+                    return main.FALSE
+            
+    def vlan_untagged(self, **untaggedargs):
+        for key in untaggedargs:
+           vars(self)[key] = untaggedargs[key]
+        if self.vlan_id :
+            self.execute(cmd='vlan '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
+            
+            if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
+                main.log.info("Configuring "+self.vlan_id)
+            else : 
+                main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
+                return main.FALSE
+            if self.tagged :
+                self.execute(cmd='untagged '+self.vlan_id, prompt = '\(vlan-'+self.vlan_id+'\)',timeout = 3)
+                if re.search('\(vlan-'+self.vlan_id+'\)', main.last_response):
+                    main.log.info("VLAN untagged done "+self.tagged)
+                    return main.TRUE
+                else : 
+                    main.log.warn("Fail to untagged Vlan"+self.vlan_id+main.last_response)
+                    return main.FALSE
+                
+    def openflow_mode(self):
+        self.configure()
+        self.execute(cmd='openflow', prompt = '\(openflow\)',timeout = 3)
+        if re.search('\(openflow\)', main.last_response):
+            main.log.info("Openflow mode enabled"+main.last_response)
+            return main.TRUE
+        else : 
+            main.log.warn("Fail to enable Openflow mode"+main.last_response)
+            return main.FALSE
+
+
+    def add_openflow_controller(self,**controllerargs):
+        for key in controllerargs:
+           vars(self)[key] = controllerargs[key]
+           
+        if not self.openflow_mode():
+            return main.FALSE
+            
+        contoller_details = 'controller-id '+ self.controller_id+'ip '+self.controller_ip + 'controller-interface vlan '+self.interface_vlan_id  
+        self.execute(cmd=contoller_details, prompt = '\(openflow\)',timeout = 3)
+        
+        if re.search('already\sconfigured', main.last_response):
+            main.log.warn("A controller is already configured with this ID."+main.last_response)
+            return main.FALSE
+        elif re.search('Incomplete\sinput',main.last_response ) :             
+            main.log.warn("Incomplete\sinput"+main.last_response)
+            return main.FALSE
+        else:
+            main.log.info("Successfully added Openflow Controller")
+            return main.TRUE
+        
+        
+    def create_openflow_instance(self,**instanceargs):
+        for key in instanceargs:
+           vars(self)[key] = instanceargs[key]
+        
+        if not self.openflow_mode():
+            return main.FALSE
+        
+        if self.instance_name :
+            self.execute(cmd='instance '+self.instance_name, prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3)
+            
+            if re.search('\(of-inst-'+self.instance_name+'\)', main.last_response):
+                main.log.info("Configuring Openflow instance "+self.instance_name)
+            else : 
+                main.log.warn("Fail to configure Openflow instance"+self.instance_name+"\n\n"+main.last_response)
+                return main.FALSE
+        if self.controller_id :
+            self.execute(cmd='controller-id '+self.controller_id, prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3)
+            main.log.info(main.last_response)
+        
+        if self.member :
+            self.execute(cmd='member vlan '+self.member_vlan_id, prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3)
+            main.log.info(main.last_response)
+    
+        if self.execute(cmd='enable', prompt = '\(of-inst-'+self.instance_name+'\)',timeout = 3):
+            return main.TRUE
+        else :
+            return main.FALSE
+    
+    def pair_vlan_with_openflow_instance(self,vlan_id):
+        self.configure()
+        self.execute(cmd='vlan '+vlan_id, prompt = '\(vlan-'+vlan_id+'\)',timeout = 3)
+        if re.search('\(vlan-'+vlan_id+'\)', main.last_response):
+            main.log.info("Configuring VLAN "+vlan_id)
+        else : 
+            main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
+            return main.FALSE
+        
+        self.execute(cmd='openflow enable', prompt = '\(vlan-'+vlan_id+'\)',timeout = 3)
+        if re.search('\(vlan-'+vlan_id+'\)', main.last_response):
+            main.log.info("Configuring VLAN "+vlan_id)
+        else : 
+            main.log.warn("Fail to configure Vlan"+self.vlan_id+main.last_response)
+            return main.FALSE
+        
+    def show_openflow_instance(self,instance_name):
+        
+        self.execute(cmd='show openflow instance '+instance_name, prompt = '#',timeout = 3)
+        return main.TRUE
+    
+    def show(self, command):
+        self.execute(cmd=command, prompt = '#',timeout = 3)
+        return main.TRUE
+    
+    
+    def openflow_enable(self):
+        self.configure()
+        self.execute(cmd='openflow enable', prompt = '#',timeout = 3)
+        return main.TRUE
+    
+    def openflow_disable(self):
+        self.configure()
+        self.execute(cmd='openflow enable', prompt = '#',timeout = 3)
+        return main.TRUE
+    
+    def remove_controller(self,controller_id):
+        self.configure()
+        self.execute(cmd='no controller-id '+controller_id, prompt = '#',timeout = 3)
+        return main.TRUE
+    
+    def remove_vlan(self,vlan_id):
+        self.configure()
+        if self.execute(cmd='no vlan '+vlan_id, prompt = '#',timeout = 3):
+            return main.TRUE
+        else :
+            self.execute(cmd=' '+vlan_id, prompt = '#',timeout = 3)
+            return main.TRUE
+    
+    def remove_openflow_instance(self,instance_name):
+        self.configure()
+        self.execute(cmd='no openflow instance '+instance_name, prompt = '#',timeout = 3)
+        return main.TRUE
diff --git a/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py b/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py
new file mode 100644
index 0000000..f5e652a
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/necswitchdriver.py
@@ -0,0 +1,545 @@
+class NEC:
+    def __init__( self ):
+        self.prompt = '(.*)'
+        self.timeout = 60 
+
+    def show(self, *options, **def_args ):
+        '''Possible Options :['  access-filter  ', '  accounting  ', '  acknowledgments  ', '  auto-config  ', '  axrp  ', '  cfm  ', '  channel-group  ', '  clock  ', '  config-lock-status  ', '  cpu  ', '  dhcp  ', '  dot1x  ', '  dumpfile  ', '  efmoam  ', '  environment  ', '  file  ', '  flash  ', '  gsrp  ', '  history  ', '  igmp-snooping  ', '  interfaces  ', '  ip  ', '  ip-dual  ', '  ipv6-dhcp  ', '  license  ', '  lldp  ', '  logging  ', '  loop-detection  ', '  mac-address-table  ', '  mc  ', '  memory  ', '  mld-snooping  ', '  netconf  ', '  netstat  ', '  ntp  ', '  oadp  ', '  openflow  ', '  port  ', '  power  ', '  processes  ', '  qos  ', '  qos-flow  ', '  sessions  ', '  sflow  ', '  spanning-tree  ', '  ssh  ', '  system  ', '  tcpdump  ', '  tech-support  ', '  track  ', '  version  ', '  vlan  ', '  vrrpstatus  ', '  whoami  ']'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_ip(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   ip   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_mc(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   mc   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_cfm(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   cfm   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_ntp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   ntp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_ssh(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   ssh   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_qos(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   qos   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_cpu(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   cpu   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_vlan(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   vlan   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_lldp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   lldp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_dhcp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   dhcp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_axrp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   axrp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_oadp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   oadp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_gsrp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   gsrp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_port(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   port   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_file(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   file   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_power(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   power   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_clock(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   clock   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_dot1x(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   dot1x   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_sflow(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   sflow   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_track(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   track   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_flash(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   flash   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_system(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   system   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_whoami(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   whoami   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_efmoam(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   efmoam   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_memory(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   memory   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_tcpdump(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   tcpdump   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_history(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   history   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_logging(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   logging   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_license(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   license   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_netstat(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   netstat   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_version(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   version   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_netconf(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   netconf   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_ipdual(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   ip-dual   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_sessions(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   sessions   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_qosflow(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   qos-flow   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_openflow(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   openflow   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_dumpfile(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   dumpfile   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_ipv6dhcp(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   ipv6-dhcp   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_processes(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   processes   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_vrrpstatus(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   vrrpstatus   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_interfaces(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   interfaces   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_environment(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   environment   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_autoconfig(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   auto-config   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_techsupport(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   tech-support   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_mldsnooping(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   mld-snooping   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_igmpsnooping(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   igmp-snooping   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_channelgroup(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   channel-group   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_spanningtree(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   spanning-tree   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_loopdetection(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   loop-detection   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_acknowledgments(self, *options, **def_args ):
+        '''Possible Options :['  interface  ']'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   acknowledgments   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_macaddresstable(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   mac-address-table   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_configlockstatus(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   config-lock-status   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
+    def show_acknowledgments_interface(self, *options, **def_args ):
+        '''Possible Options :[]'''
+        arguments= ''
+        for option in options:
+            arguments = arguments + option +' ' 
+        prompt = def_args.setdefault('prompt',self.prompt)
+        timeout = def_args.setdefault('timeout',self.timeout)
+        self.execute( cmd= "show   acknowledgments     interface   "+ arguments, prompt = prompt, timeout = timeout ) 
+        return main.TRUE
+
diff --git a/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py b/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py
new file mode 100644
index 0000000..f0d2a16
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/remotepoxdriver.py
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+'''
+Created on 12-Feb-2013
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
+
+
+    TestON is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    TestON is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with TestON.  If not, see <http://www.gnu.org/licenses/>.		
+
+
+RemoteVMDriver is the basic driver which will handle the Mininet functions
+'''
+
+import pexpect
+import struct
+import fcntl
+import os
+import signal
+import re
+import sys
+import time
+
+sys.path.append("../")
+
+from drivers.common.cli.remotetestbeddriver import RemoteTestBedDriver
+
+class RemotePoxDriver(RemoteTestBedDriver):
+    '''
+        RemoteVMDriver is the basic driver which will handle the Mininet functions
+    '''
+    def __init__(self):
+        super(RemoteTestBedDriver, self).__init__()
+        
+    def connect(self,**connectargs):
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+        
+        self.name = self.options['name']
+
+        self.handle = super(RemotePoxDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+        if self.handle :
+            main.log.info(self.name+" connected successfully ")  
+            
+            self.execute(cmd="cd "+self.options['pox_lib_location'],prompt="/pox\$",timeout=120)
+            self.execute(cmd='./pox.py samples.of_tutorial',prompt="DEBUG:",timeout=120)
+            return self.handle
+        return main.TRUE
+        
+    def disconnect(self,handle):
+        if self.handle:
+            self.execute(cmd="exit()",prompt="/pox\$",timeout=120)
+        else :
+            main.log.error("Connection failed to the host") 
diff --git a/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py b/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py
new file mode 100644
index 0000000..4592e71
--- /dev/null
+++ b/TestON/drivers/common/cli/remotetestbed/remotevmdriver.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+'''
+Created on 12-Feb-2013
+
+@author: Anil Kumar (anilkumar.s@paxterrasolutions.com)
+
+
+    TestON is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 2 of the License, or
+    (at your option) any later version.
+
+    TestON is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with TestON.  If not, see <http://www.gnu.org/licenses/>.		
+
+
+RemoteVMDriver is the basic driver which will handle the Mininet functions
+'''
+
+import pexpect
+import struct
+import fcntl
+import os
+import signal
+import re
+import sys
+import time
+
+sys.path.append("../")
+
+from drivers.common.cli.remotetestbeddriver import RemoteTestBedDriver
+
+class RemoteVMDriver(RemoteTestBedDriver):
+    '''
+        RemoteVMDriver is the basic driver which will handle the Mininet functions
+    '''
+    def __init__(self):
+        super(RemoteTestBedDriver, self).__init__()
+        
+    def connect(self,**connectargs):
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+        
+        self.name = self.options['name']
+
+        self.handle = super(RemoteVMDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
+        if self.handle :
+            main.log.info(self.name+" connected successfully ")  
+            return self.handle
+        return main.TRUE
+    def SSH(self,**connectargs):
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+        
+        '''
+           Connection will establish to the remote host using ssh.
+           It will take user_name ,ip_address and password as arguments<br>
+           and will return the handle. 
+        '''
+        for key in connectargs:
+            vars(self)[key] = connectargs[key]
+            
+        ssh_newkey = 'Are you sure you want to continue connecting'
+        refused = "ssh: connect to host "+self.ip_address+" port 22: Connection refused"
+        if self.port:
+            self.handle.sendline('ssh -p '+self.port+' '+self.user_name+'@'+self.ip_address)
+        else :
+            self.handle.sendline('ssh '+self.user_name+'@'+self.ip_address)
+            self.handle.sendline("\r")
+            
+        i=self.handle.expect([ssh_newkey,'password:',pexpect.EOF,pexpect.TIMEOUT,refused],120)
+        
+        if i==0:    
+            main.log.info("ssh key confirmation received, send yes")
+            self.handle.sendline('yes')
+            i=self.handle.expect([ssh_newkey,'password:',pexpect.EOF])
+        if i==1:
+            main.log.info("ssh connection asked for password, gave password")
+            self.handle.sendline(self.pwd)
+            self.handle.expect('>|#|$')
+            
+        elif i==2:
+            main.log.error("Connection timeout")
+            return main.FALSE
+        elif i==3: #timeout
+            main.log.error("No route to the Host "+self.user_name+"@"+self.ip_address)
+            return main.FALSE
+        elif i==4:
+            main.log.error("ssh: connect to host "+self.ip_address+" port 22: Connection refused")
+            return main.FALSE
+
+        self.handle.sendline("\r")        
+        return main.TRUE