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