From a5ad5e58ebf7bfbe712b809cb0ea6283b75d6718 Mon Sep 17 00:00:00 2001 From: Apollon Oikonomopoulos Date: Mon, 4 Jun 2012 22:58:12 +0300 Subject: [PATCH] Peripheral changes for networks Specifically: * export a new environment variable for the gnt-os-interface * export a new environment variable for KVM specific scripts * ovf support for networks Signed-off-by: Apollon Oikonomopoulos Signed-off-by: Dimitris Aragiorgis Reviewed-by: Iustin Pop --- lib/backend.py | 2 ++ lib/hypervisor/hv_kvm.py | 3 +++ lib/ovf.py | 13 ++++++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/backend.py b/lib/backend.py index 1971189..d5c0e92 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -2462,6 +2462,8 @@ def OSEnvironment(instance, inst_os, debug=0): result["NIC_%d_BRIDGE" % idx] = nic.nicparams[constants.NIC_LINK] if nic.nicparams[constants.NIC_LINK]: result["NIC_%d_LINK" % idx] = nic.nicparams[constants.NIC_LINK] + if nic.network: + result["NIC_%d_NETWORK" % idx] = nic.network if constants.HV_NIC_TYPE in instance.hvparams: result["NIC_%d_FRONTEND_TYPE" % idx] = \ instance.hvparams[constants.HV_NIC_TYPE] diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index 52a9fc2..71f3e92 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -775,6 +775,9 @@ class KVMHypervisor(hv_base.BaseHypervisor): if nic.nicparams[constants.NIC_LINK]: env["LINK"] = nic.nicparams[constants.NIC_LINK] + if nic.network: + env["NETWORK"] = nic.network + if nic.nicparams[constants.NIC_MODE] == constants.NIC_MODE_BRIDGED: env["BRIDGE"] = nic.nicparams[constants.NIC_LINK] diff --git a/lib/ovf.py b/lib/ovf.py index c1c54b0..dc58133 100644 --- a/lib/ovf.py +++ b/lib/ovf.py @@ -515,7 +515,7 @@ class OVFReader(object): (OVF_SCHEMA, OVF_SCHEMA)) network_names = self._GetAttributes(networks_search, "{%s}name" % OVF_SCHEMA) - required = ["ip", "mac", "link", "mode"] + required = ["ip", "mac", "link", "mode", "network"] for (counter, network_name) in enumerate(network_names): network_search = ("{%s}VirtualSystem/{%s}VirtualHardwareSection/{%s}Item" % (OVF_SCHEMA, OVF_SCHEMA, OVF_SCHEMA)) @@ -537,6 +537,8 @@ class OVFReader(object): GANETI_SCHEMA) ganeti_data["link"] = network_ganeti_data.findtext("{%s}Link" % GANETI_SCHEMA) + ganeti_data["network"] = network_ganeti_data.findtext("{%s}Network" % + GANETI_SCHEMA) mac_data = None if network_data: mac_data = network_data.findtext("{%s}Address" % RASD_SCHEMA) @@ -758,6 +760,7 @@ class OVFWriter(object): SubElementText(nic, "gnt:MACAddress", network["mac"]) SubElementText(nic, "gnt:IPAddress", network["ip"]) SubElementText(nic, "gnt:Link", network["link"]) + SubElementText(nic, "gnt:Network", network["network"]) def SaveVirtualSystemData(self, name, vcpus, memory): """Convert virtual system information to OVF sections. @@ -1329,6 +1332,8 @@ class OVFImporter(Converter): results["nic%s_mac" % nic_id] = nic_desc.get("mac", constants.VALUE_AUTO) results["nic%s_link" % nic_id] = \ nic_desc.get("link", constants.VALUE_AUTO) + results["nic%s_network" % nic_id] = \ + nic_desc.get("network", constants.VALUE_AUTO) if nic_desc.get("mode") == "bridged": results["nic%s_ip" % nic_id] = constants.VALUE_NONE else: @@ -1660,7 +1665,7 @@ class OVFExporter(Converter): counter = 0 while True: data_link = \ - self.config_parser.get(constants.INISECT_INS, "nic%s_link" % counter) + self.config_parser.get(constants.INISECT_INS, "nic%s_network" % counter) if data_link is None: break results.append({ @@ -1670,7 +1675,9 @@ class OVFExporter(Converter): "nic%s_mac" % counter), "ip": self.config_parser.get(constants.INISECT_INS, "nic%s_ip" % counter), - "link": data_link, + "link": self.config_parser.get(constants.INISECT_INS, + "nic%s_link" % counter), + "network": data_link, }) if results[counter]["mode"] not in constants.NIC_VALID_MODES: raise errors.OpPrereqError("Network mode %s not recognized" -- 1.7.10.4