2 Open vSwitch Object Definition
3 Authors: james.luhrsen@hp.com
7 from BaseSwitch import BaseSwitch
10 class Ovs(BaseSwitch):
22 mgmt_password = "mininet"
26 initialization_type = "cleanup"
29 def connection_configs(self):
33 def cleanup_cmds(self):
35 "/sbin/ifconfig -a | egrep '^s' | awk '{print \"sudo ovs-vsctl del-br\",$1}' | sh"
39 def initialization_cmds(self):
40 return [self.cleanup_cmds]
43 def base_openflow_config(self):
45 "sudo ovs-vsctl add-br s1",
46 "sudo ovs-vsctl set bridge s1 protocols=OpenFlow13",
47 "sudo ovs-vsctl set-controller s1 tcp:" + self.of_controller_ip,
48 "sudo ifconfig s1 up",
52 def openflow_validation_cmd(self):
53 return "sudo ovs-vsctl show"
56 def openflow_enable_config(self):
57 return ["sudo ovs-vsctl set-controller s1 tcp:" + self.of_controller_ip]
60 def openflow_enable_validations(self):
61 return ["is_connected: true"]
63 invalid_of_controller_ip = "1.1.1.1"
66 def openflow_disable_config(self):
67 return ["sudo ovs-vsctl set-controller s1 tcp:" + self.invalid_of_controller_ip]
70 def openflow_disable_validations(self):
74 def dump_all_flows(self):
75 return "sudo /usr/bin/ovs-ofctl dump-flows s1 -O OpenFlow13"
78 def flow_validations(self):
90 "table=" + self.table_id,
93 def create_flow_match_elements(self, flow_xml):
94 super(Ovs, self).create_flow_match_elements(flow_xml)
95 if self.action == "INPORT":
96 self.action = "IN_PORT"
99 def datapath_id_output_command(self):
100 """This regex will extract the macaddr of the ovs switch"""
102 '/sbin/ifconfig s1 | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"'
105 datapath_id_output_string = ""
108 def update_datapath_id(self):
109 if not self.datapath_id_output_string:
110 self.datapath_id = "unknown"
113 datapath_id_hex = re.sub(":", "", self.datapath_id_output_string)
114 self.datapath_id = self.convert_hex_to_decimal_as_string(datapath_id_hex)