+++ /dev/null
-"""
-Open vSwitch Object Definition
-Authors: james.luhrsen@hp.com
-Created: 2014-10-02
-"""
-import re
-from BaseSwitch import * # noqa
-
-
-class Ovs(BaseSwitch):
- '''
- OpenVswitch Class
- '''
-
- make = 'OpenVswitch'
- model = 'OVS'
-
- mgmt_protocol = 'ssh'
- mgmt_ip = ''
- mgmt_port = ''
- mgmt_user = 'mininet'
- mgmt_password = 'mininet'
-
- mgmt_prompt = '>'
-
- initialization_type = 'cleanup'
-
- @property
- def connection_configs(self):
- return ['pwd']
-
- @property
- def cleanup_cmds(self):
- return ['/sbin/ifconfig -a | egrep \'^s\' | awk \'{print \"sudo ovs-vsctl del-br\",$1}\' | sh']
-
- @property
- def initialization_cmds(self):
- return [self.cleanup_cmds]
-
- @property
- def base_openflow_config(self):
- return ['sudo ovs-vsctl add-br s1',
- 'sudo ovs-vsctl set bridge s1 protocols=OpenFlow13',
- 'sudo ovs-vsctl set-controller s1 tcp:' + self.of_controller_ip,
- 'sudo ifconfig s1 up']
-
- @property
- def openflow_validation_cmd(self):
- return 'sudo ovs-vsctl show'
-
- @property
- def openflow_enable_config(self):
- return ['sudo ovs-vsctl set-controller s1 tcp:' + self.of_controller_ip]
-
- @property
- def openflow_enable_validations(self):
- return ['is_connected: true']
-
- invalid_of_controller_ip = '1.1.1.1'
-
- @property
- def openflow_disable_config(self):
- return ['sudo ovs-vsctl set-controller s1 tcp:' + self.invalid_of_controller_ip]
-
- @property
- def openflow_disable_validations(self):
- return []
-
- @property
- def dump_all_flows(self):
- return 'sudo /usr/bin/ovs-ofctl dump-flows s1 -O OpenFlow13'
-
- @property
- def flow_validations(self):
- return ['dl_src=' + self.src_mac +
- ',dl_dst=' + self.dst_mac +
- ',nw_src=' + self.ip_src +
- ',nw_dst=' + self.ip_dst +
- ' actions=' + self.action,
- 'table=' + self.table_id]
-
- def create_flow_match_elements(self, flow_xml):
- super(Ovs, self).create_flow_match_elements(flow_xml)
- if (self.action == 'INPORT'):
- self.action = 'IN_PORT'
-
- @property
- def datapath_id_output_command(self):
- '''This regex will extract the macaddr of the ovs switch'''
- return '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'
-
- datapath_id_output_string = ''
- datapath_id = ''
-
- def update_datapath_id(self):
- if not self.datapath_id_output_string:
- self.datapath_id = 'unknown'
- else:
- # 32:cc:bf:34:ed:4c
- datapath_id_hex = re.sub(':', '', self.datapath_id_output_string)
- self.datapath_id = self.convert_hex_to_decimal_as_string(datapath_id_hex)