Sandro Bonazzola has uploaded a new change for review.

Change subject: packaging: allow importing existing ISO domain on setup
......................................................................

packaging: allow importing existing ISO domain on setup

NFS VALIDATION_FUNC is now a LOOSE_VALIDATION: if the user is sure to want to
re-import the existing ISO domain has to accept to use the supplied input.

_configNfsShare need to add the ISO domain path to /etc/exports only if it
is not alredy there. In order to know that I've made public isPathInExportFs
from engine_validators.py.

_configNfsShare generate a new uuid and create a new domain only if it doesn't
already exists in the supplied domain path.

isPathInExportFs previously redefined the built-in file, I've fixed it.

Change-Id: I3a4343f8374e6439b0ee0a14fff233a0d4a0d5a3
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=904149
Signed-off-by: Sandro Bonazzola <sbona...@redhat.com>
---
M packaging/fedora/setup/engine-setup.py
M packaging/fedora/setup/engine_validators.py
2 files changed, 29 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/56/11556/1

diff --git a/packaging/fedora/setup/engine-setup.py 
b/packaging/fedora/setup/engine-setup.py
index 0a82fec..30cb6b7 100755
--- a/packaging/fedora/setup/engine-setup.py
+++ b/packaging/fedora/setup/engine-setup.py
@@ -23,6 +23,7 @@
 import engine_validators as validate
 import random
 import tempfile
+import uuid
 from optparse import OptionParser, OptionGroup
 from setup_controller import Controller
 from Cheetah.Template import Template
@@ -465,7 +466,7 @@
                 "VALIDATION_FUNC" :validate.validateNFSMountPoint,
                 "DEFAULT_VALUE"   :generateIsoDomainName(),
                 "MASK_INPUT"      : False,
-                "LOOSE_VALIDATION": False,
+                "LOOSE_VALIDATION": True,
                 "CONF_NAME"       : "NFS_MP",
                 "USE_DEFAULT"     : False,
                 "NEED_CONFIRM"    : False,
@@ -1736,10 +1737,12 @@
         if not os.path.exists(controller.CONF["NFS_MP"]):
             logging.debug("creating directory %s " % 
(controller.CONF["NFS_MP"]))
             os.makedirs(controller.CONF["NFS_MP"])
-        # Add export to exportfs
-        nfsutils.addNfsExport(controller.CONF["NFS_MP"],
-                              (("0.0.0.0", "0.0.0.0", ("rw",)),),
-                              " %s installer" % basedefs.APP_NAME)
+
+        # Add export to exportfs if not already there
+        if not validate.isPathInExportFs(controller.CONF["NFS_MP"]):
+            nfsutils.addNfsExport(controller.CONF["NFS_MP"],
+                                  (("0.0.0.0", "0.0.0.0", ("rw",)),),
+                                  " %s installer" % basedefs.APP_NAME)
 
         # Add warning to user about nfs export permissions
         controller.MESSAGES.append(output_messages.WARN_ISO_DOMAIN_SECURITY % 
(controller.CONF["NFS_MP"]))
@@ -1755,11 +1758,24 @@
         # Start services
         _startNfsServices()
 
-        # Generate the UUID for the isodomain
-        controller.CONF["sd_uuid"] = nfsutils.generateUUID()
+        for entry in os.listdir(controller.CONF["NFS_MP"]):
+            path = os.path.join(controller.CONF["NFS_MP"], entry)
+            if os.path.isdir(path):
+                try:
+                    #check if the entry is a valid UUID
+                    if uuid.UUID(entry).version == 4:
+                        controller.CONF["sd_uuid"] = str(entry)
+                except ValueError:
+                    #Should we abort if something else exists here?
+                    continue
+        else:
+            # Generate the UUID for the isodomain
+            controller.CONF["sd_uuid"] = nfsutils.generateUUID()
 
-        # Create ISO domain
-        nfsutils.createISODomain(controller.CONF["NFS_MP"], 
controller.CONF["ISO_DOMAIN_NAME"], controller.CONF["sd_uuid"])
+            # Create ISO domain
+            nfsutils.createISODomain(controller.CONF["NFS_MP"],
+                                     controller.CONF["ISO_DOMAIN_NAME"],
+                                     controller.CONF["sd_uuid"])
 
         # Add iso domain to DB
         _addIsoDomaintoDB(controller.CONF["sd_uuid"], 
controller.CONF["ISO_DOMAIN_NAME"])
diff --git a/packaging/fedora/setup/engine_validators.py 
b/packaging/fedora/setup/engine_validators.py
index a26fa97..d8a01c3 100644
--- a/packaging/fedora/setup/engine_validators.py
+++ b/packaging/fedora/setup/engine_validators.py
@@ -27,7 +27,7 @@
     if not utils.verifyStringFormat(path, 
"^\/[\w\_\-\s]+(\/[\w\_\-\s]+)*\/?$"):
         print output_messages.INFO_VAL_PATH_NAME_INVALID
         return False
-    if _isPathInExportFs(path):
+    if isPathInExportFs(path):
         print output_messages.INFO_VAL_PATH_NAME_IN_EXPORTS
         return False
     if os.path.exists(path) and len(os.listdir(path)):
@@ -539,12 +539,11 @@
             addresses.add(foundAddress)
     return addresses
 
-def _isPathInExportFs(path):
+def isPathInExportFs(path):
     if not os.path.exists(basedefs.FILE_ETC_EXPORTS):
         return False
-    file = open(basedefs.FILE_ETC_EXPORTS)
-    fileContent = file.readlines()
-    file.close()
+    with open(basedefs.FILE_ETC_EXPORTS) as exportsFile:
+        fileContent = exportsFile.readlines()
 
     for line in fileContent:
         if utils.verifyStringFormat(line, "^%s\s+.+" % (path)):


--
To view, visit http://gerrit.ovirt.org/11556
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3a4343f8374e6439b0ee0a14fff233a0d4a0d5a3
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Sandro Bonazzola <sbona...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to