def unplug(self, instance, network, mapping): dev = self.get_dev_name(mapping["vif_uuid"]) client = VIFINFOClient(FLAGS.quantum_host, FLAGS.quantum_port) client.delete_vifinfo(mapping["vif_uuid"]) try: utils.execute("ovs-vsctl", "del-port", FLAGS.libvirt_ovs_bridge, dev, run_as_root=True) utils.execute("ip", "link", "delete", dev, run_as_root=True) except exception.ProcessExecutionError: LOG.warning(_("Failed while unplugging vif of instance '%s'"), instance["name"]) raise
def plug(self, instance, network, mapping): iface_id = mapping["vif_uuid"] dev = self.get_dev_name(iface_id) if not linux_net._device_exists(dev): utils.execute("ip", "tuntap", "add", dev, "mode", "tap", run_as_root=True) utils.execute("ip", "link", "set", dev, "up", run_as_root=True) utils.execute( "ovs-vsctl", "--", "--may-exist", "add-port", FLAGS.libvirt_ovs_bridge, dev, "--", "set", "Interface", dev, "external-ids:iface-id=%s" % iface_id, "--", "set", "Interface", dev, "external-ids:iface-status=active", "--", "set", "Interface", dev, "external-ids:attached-mac=%s" % mapping["mac"], run_as_root=True, ) ret, left = utils.execute( "ovs-vsctl", "get", "bridge", FLAGS.libvirt_ovs_bridge, "datapath_id", run_as_root=True ) datapath_id = "0x" + ret.strip('"\n') ret, left = utils.execute("ovs-vsctl", "get", "Interface", dev, "ofport", run_as_root=True) port_no = ret.strip() client = VIFINFOClient(FLAGS.quantum_host, FLAGS.quantum_port) client.create_vifinfo(mapping["vif_uuid"], datapath_id, port_no) result = {"script": "", "name": dev, "mac_address": mapping["mac"]} return result