+ def xmlrpc_create_test_bridge(self, bridge, iface):
+ """
+ This function creates a physical bridge from iface. It moves the
+ IP configuration from the physical interface to the bridge.
+ """
+ ret = vswitch.ovs_vsctl_add_bridge(bridge)
+ if ret == 0:
+ self.pbridges.add((bridge, iface))
+ util.interface_up(bridge)
+ (ip_addr, mask) = util.interface_get_ip(iface)
+ util.interface_assign_ip(bridge, ip_addr, mask)
+ util.move_routes(iface, bridge)
+ util.interface_assign_ip(iface, "0.0.0.0", "255.255.255.255")
+ ret = vswitch.ovs_vsctl_add_port_to_bridge(bridge, iface)
+ if ret == 0:
+ self.ports.add(iface)
+ else:
+ util.interface_assign_ip(iface, ip_addr, mask)
+ util.move_routes(bridge, iface)
+ vswitch.ovs_vsctl_del_bridge(bridge)
+
+ return ret
+
+ def xmlrpc_del_test_bridge(self, bridge, iface):
+ """
+ This function deletes the test bridge and moves its IP configuration
+ back to the physical interface.
+ """
+ ret = vswitch.ovs_vsctl_del_pbridge(bridge, iface)
+ self.pbridges.discard((bridge, iface))
+ return ret
+
+ def xmlrpc_get_iface_from_bridge(self, brname):
+ """
+ Tries to figure out physical interface from bridge.
+ """
+ return vswitch.ovs_get_physical_interface(brname)
+
+ def xmlrpc_create_bridge(self, brname):
+ """
+ Creates an OVS bridge.
+ """
+ ret = vswitch.ovs_vsctl_add_bridge(brname)
+ if ret == 0:
+ self.bridges.add(brname)
+ return ret
+
+ def xmlrpc_del_bridge(self, brname):
+ """
+ Deletes an OVS bridge.
+ """
+ ret = vswitch.ovs_vsctl_del_bridge(brname)
+ if ret == 0:
+ self.bridges.discard(brname)
+ return ret
+
+ def xmlrpc_is_ovs_bridge(self, bridge):
+ """
+ This function verifies whether given interface is an ovs bridge.
+ """
+ return vswitch.ovs_vsctl_is_ovs_bridge(bridge)
+
+ def xmlrpc_add_port_to_bridge(self, bridge, port):
+ """
+ Adds a port to the OVS bridge.
+ """
+ ret = vswitch.ovs_vsctl_add_port_to_bridge(bridge, port)
+ if ret == 0:
+ self.ports.add(port)
+ return ret
+
+ def xmlrpc_del_port_from_bridge(self, port):
+ """
+ Removes a port from OVS bridge.
+ """
+ ret = vswitch.ovs_vsctl_del_port_from_bridge(port)
+ if ret == 0:
+ self.ports.discard(port)
+ return ret
+
+ def xmlrpc_ovs_vsctl_set(self, table, record, column, key, value):
+ """
+ This function allows to alter OVS database.
+ """
+ return vswitch.ovs_vsctl_set(table, record, column, key, value)
+
+ def xmlrpc_interface_up(self, iface):
+ """
+ This function brings up given interface.
+ """
+ return util.interface_up(iface)
+
+ def xmlrpc_interface_assign_ip(self, iface, ip_address, mask):
+ """
+ This function allows to assing ip address to the given interface.
+ """
+ return util.interface_assign_ip(iface, ip_address, mask)