Enable disk growth with exclusive storage
[ganeti-local] / lib / ovf.py
index d2cc90f..dc75816 100644 (file)
@@ -53,6 +53,7 @@ except AttributeError:
 from ganeti import constants
 from ganeti import errors
 from ganeti import utils
+from ganeti import pathutils
 
 
 # Schemas used in OVF format
@@ -514,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))
@@ -536,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}Net" %
+                                                              GANETI_SCHEMA)
       mac_data = None
       if network_data:
         mac_data = network_data.findtext("{%s}Address" % RASD_SCHEMA)
@@ -757,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:Net", network["network"])
 
   def SaveVirtualSystemData(self, name, vcpus, memory):
     """Convert virtual system information to OVF sections.
@@ -1080,13 +1084,13 @@ class OVFImporter(Converter):
 
     if self.options.output_dir:
       self.output_dir = os.path.abspath(self.options.output_dir)
-      if (os.path.commonprefix([constants.EXPORT_DIR, self.output_dir]) !=
-          constants.EXPORT_DIR):
+      if (os.path.commonprefix([pathutils.EXPORT_DIR, self.output_dir]) !=
+          pathutils.EXPORT_DIR):
         logging.warning("Export path is not under %s directory, import to"
                         " Ganeti using gnt-backup may fail",
-                        constants.EXPORT_DIR)
+                        pathutils.EXPORT_DIR)
     else:
-      self.output_dir = constants.EXPORT_DIR
+      self.output_dir = pathutils.EXPORT_DIR
 
     self.ovf_reader = OVFReader(self.input_path)
     self.ovf_reader.VerifyManifest()
@@ -1328,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:
@@ -1659,7 +1665,8 @@ 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_link" % counter)
       if data_link is None:
         break
       results.append({
@@ -1669,6 +1676,8 @@ class OVFExporter(Converter):
                                       "nic%s_mac" % counter),
         "ip": self.config_parser.get(constants.INISECT_INS,
                                      "nic%s_ip" % counter),
+        "network": self.config_parser.get(constants.INISECT_INS,
+                                          "nic%s_network" % counter),
         "link": data_link,
       })
       if results[counter]["mode"] not in constants.NIC_VALID_MODES: