Douglas Schilling Landgraf has uploaded a new change for review. Change subject: oVirt Node Upgrade: Support N configurations ......................................................................
oVirt Node Upgrade: Support N configurations To have multiple configurations supported for node upgrade and same code for upstream/downstream, this patch will include the delimiter ":" to the below elements in vdc_options and the changes required in Engine source. - OvirtInitialSupportedIsoVersion - OvirtIsoPrefix - oVirtISOsRepositoryPath Change-Id: Ibfb9dc5d0dc8780b519107acbe0ae866831f782c Signed-off-by: Douglas Schilling Landgraf <[email protected]> --- M backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetoVirtISOsQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InstallVdsCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeInfo.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeUpgrade.java 5 files changed, 204 insertions(+), 106 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/56/14756/1 diff --git a/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql b/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql index 14779e6..ee711fa 100644 --- a/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql +++ b/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql @@ -340,9 +340,9 @@ select fn_db_add_config_value('OriginType','OVIRT','general'); select fn_db_add_config_value('OvfVirtualSystemType','ENGINE','general'); --Handling The ovirt-node installation files path -select fn_db_add_config_value('OvirtInitialSupportedIsoVersion','2.5.5','general'); -select fn_db_add_config_value('OvirtIsoPrefix','ovirt-node','general'); -select fn_db_add_config_value('oVirtISOsRepositoryPath','/usr/share/ovirt-node-iso','general'); +select fn_db_add_config_value('OvirtInitialSupportedIsoVersion','5.8:2.5.5','general'); +select fn_db_add_config_value('OvirtIsoPrefix','rhev:ovirt-node','general'); +select fn_db_add_config_value('oVirtISOsRepositoryPath','/usr/share/rhev-hypervisor:/usr/share/ovirt-node-iso','general'); select fn_db_add_config_value('oVirtUpgradeScriptName','/usr/share/vdsm-reg/vdsm-upgrade','general'); select fn_db_add_config_value('oVirtUploadPath','/data/updates/ovirt-node-image.iso','general'); select fn_db_add_config_value('OvfUpdateIntervalInMinutes','60','general'); @@ -472,10 +472,7 @@ select fn_db_add_config_value('VDSAttemptsToResetCount','2','general'); select fn_db_add_config_value('VdsCertificateValidityInYears','5','general'); select fn_db_add_config_value('vdsConnectionTimeout','180','general'); -select fn_db_add_config_value('VdsFenceOptionMapping','alom:secure=secure,port=ipport;apc:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;drac5:secure=secure,port=ipport;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.0'); -select fn_db_add_config_value('VdsFenceOptionMapping','alom:secure=secure,port=ipport;apc:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;drac5:secure=secure,port=ipport;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.1'); -select fn_db_add_config_value('VdsFenceOptionMapping','apc:secure=secure,port=ipport,slot=port;apc_snmp:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;cisco_ucs:secure=ssl,slot=port;drac5:secure=secure,slot=port;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;ilo2:secure=ssl,port=ipport;ipmilan:;ilo3:;ilo4:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.2'); -select fn_db_add_config_value('VdsFenceOptionMapping','apc:secure=secure,port=ipport,slot=port;apc_snmp:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;cisco_ucs:secure=ssl,slot=port;drac5:secure=secure,slot=port;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;ilo2:secure=ssl,port=ipport;ipmilan:;ilo3:;ilo4:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.3'); +select fn_db_add_config_value('VdsFenceOptionMapping','apc:secure=secure,port=ipport,slot=port;apc_snmp:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;cisco_ucs:secure=ssl,slot=port;drac5:secure=secure,slot=port;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;ilo2:secure=ssl,port=ipport;ipmilan:;ilo3:;ilo4:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','general'); select fn_db_add_config_value('VdsFenceOptions','','general'); select fn_db_add_config_value('VdsFenceOptionTypes','secure=bool,port=int,slot=int','general'); select fn_db_add_config_value('VdsFenceType','alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs','3.0'); @@ -602,9 +599,9 @@ select fn_db_update_config_value('MigrationSupportForNativeUsb','false','3.1'); select fn_db_update_config_value('MigrationSupportForNativeUsb','true','3.2'); select fn_db_update_config_value('MinimalETLVersion','3.2.0','general'); -select fn_db_update_config_value('OvirtInitialSupportedIsoVersion','2.5.5','general'); -select fn_db_update_config_value('OvirtIsoPrefix','ovirt-node','general'); -select fn_db_update_config_value('oVirtISOsRepositoryPath','/usr/share/ovirt-node-iso','general'); +select fn_db_update_config_value('OvirtInitialSupportedIsoVersion','5.8:2.5.5','general'); +select fn_db_update_config_value('OvirtIsoPrefix','rhev:ovirt-node','general'); +select fn_db_update_config_value('oVirtISOsRepositoryPath','/usr/share/rhev-hypervisor:/usr/share/ovirt-node-iso','general'); select fn_db_update_config_value('PostgresPagingSyntax','OFFSET (%1$s -1) LIMIT %2$s','general'); select fn_db_update_config_value('PostgresSearchTemplate','SELECT * FROM (%2$s) %1$s) as T1 %3$s','general'); select fn_db_update_config_value('RhevhLocalFSPath','/data/images/rhev','general'); @@ -617,10 +614,7 @@ select fn_db_update_config_value('SupportedVDSMVersions','4.9,4.10','general'); select fn_db_update_config_value('VdcVersion','3.3.0.0','general'); select fn_db_update_config_value('ProductRPMVersion','3.3.0.0','general'); -select fn_db_update_config_value('VdsFenceOptionMapping','alom:secure=secure,port=ipport;apc:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;drac5:secure=secure,port=ipport;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.0'); -select fn_db_update_config_value('VdsFenceOptionMapping','alom:secure=secure,port=ipport;apc:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;drac5:secure=secure,port=ipport;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.1'); -select fn_db_update_config_value('VdsFenceOptionMapping','apc:secure=secure,port=ipport,slot=port;apc_snmp:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;cisco_ucs:secure=ssl,slot=port;drac5:secure=secure,slot=port;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;ilo2:secure=ssl,port=ipport;ipmilan:;ilo3:;ilo4:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.2'); -select fn_db_update_config_value('VdsFenceOptionMapping','apc:secure=secure,port=ipport,slot=port;apc_snmp:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;cisco_ucs:secure=ssl,slot=port;drac5:secure=secure,slot=port;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;ilo2:secure=ssl,port=ipport;ipmilan:;ilo3:;ilo4:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','3.3'); +select fn_db_update_config_value('VdsFenceOptionMapping','apc:secure=secure,port=ipport,slot=port;apc_snmp:secure=secure,port=ipport,slot=port;bladecenter:secure=secure,port=ipport,slot=port;cisco_ucs:secure=ssl,slot=port;drac5:secure=secure,slot=port;eps:slot=port;ilo:secure=ssl,port=ipport;ipmilan:;ilo2:secure=ssl,port=ipport;ipmilan:;ilo3:;ilo4:;rsa:secure=secure,port=ipport;rsb:;wti:secure=secure,port=ipport,slot=port','general'); select fn_db_update_config_value('VdsFenceType','alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs','3.0'); select fn_db_update_config_value('VdsFenceType','alom,apc,bladecenter,drac5,eps,ilo,ilo3,ipmilan,rsa,rsb,wti,cisco_ucs','3.1'); select fn_db_update_config_value('VdsFenceType','apc,apc_snmp,bladecenter,cisco_ucs,drac5,eps,ilo,ilo2,ilo3,ilo4,ipmilan,rsa,rsb,wti','3.2'); @@ -689,7 +683,6 @@ select fn_db_delete_config_value('LogVdsRegistration','general'); select fn_db_delete_config_value('LogXmlRpcData','general'); select fn_db_delete_config_value('NetConsolePort','general'); -select fn_db_delete_config_value('VdsFenceOptionMapping','general'); -- removing power client select fn_db_delete_config_value('PowerClientAllowUsingAsIRS','general'); select fn_db_delete_config_value('PowerClientGUI','general'); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetoVirtISOsQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetoVirtISOsQuery.java index cf6cdbd..4ed53ae 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetoVirtISOsQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetoVirtISOsQuery.java @@ -15,8 +15,6 @@ import org.apache.commons.lang.exception.ExceptionUtils; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSType; -import org.ovirt.engine.core.common.config.Config; -import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.queries.VdsIdParametersBase; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.RpmVersion; @@ -41,78 +39,91 @@ @Override protected void executeQueryCommand() { + OVirtNodeInfo Info = new OVirtNodeInfo(); RpmVersion vdsOsVersion = getOvirtOsVersion(); List<RpmVersion> availableISOsList = new ArrayList<RpmVersion>(); - File directory = new File(Config.resolveOVirtISOsRepositoryPath()); + List<String> reposUpgrade = new ArrayList<String>(); - if (directory.isDirectory()) { - List<String> listOfIsoFiles = getListOfIsoFiles(directory); - if (!listOfIsoFiles.isEmpty()) { + String tempRepo[] = Info.getISOsPath().split(Info.getInfoDelimiter()); + for(int i=0; i < tempRepo.length; i++) + reposUpgrade.add(tempRepo[i]); - File[] ovirtVersionFiles = filterOvirtFiles(directory, isoVersionPattern); + for (String repo: reposUpgrade) { + File directory = new File(repo); - for (File versionFile : ovirtVersionFiles) { - try { - IsoData isoData = new IsoData(); - isoData.setVersion(readIsoVersion(versionFile)); - String isoVersionText = isoData.getVersion(); - isoData.setVdsmCompitibilityVersion(readVdsmCompatibiltyVersion(( - versionFile.getAbsolutePath().replace(OVIRT_ISO_VERSION_PREFIX, - OVIRT_ISO_VDSM_COMPATIBILITY_PREFIX)))); + log.infoFormat("ISO Path: {0}", repo); + if (directory.isDirectory()) { + List<String> listOfIsoFiles = getListOfIsoFiles(directory, Info); + log.infoFormat("List of ISOs: {0}", listOfIsoFiles); - if (StringUtils.isBlank(isoVersionText)) { - log.debugFormat("Iso version file {0} is empty.", versionFile.getAbsolutePath()); - continue; - } + if (!listOfIsoFiles.isEmpty()) { + File[] ovirtVersionFiles = filterOvirtFiles(directory, isoVersionPattern); - String[] versionParts = isoVersionText.split(","); - if (versionParts.length < 2) { - log.debugFormat("Iso version file {0} contains invalid content. Excpected: <major-version>,<release> format.", - versionFile.getAbsolutePath()); - continue; - } + for (File versionFile : ovirtVersionFiles) { + try { + IsoData isoData = new IsoData(); + isoData.setVersion(readIsoVersion(versionFile)); + String isoVersionText = isoData.getVersion(); + isoData.setVdsmCompitibilityVersion(readVdsmCompatibiltyVersion(( + versionFile.getAbsolutePath().replace(OVIRT_ISO_VERSION_PREFIX, + OVIRT_ISO_VDSM_COMPATIBILITY_PREFIX)))); - String majorVersionStr = versionParts[0]; - String releaseStr = versionParts[1]; - String isoFileName = getIsoFileNameByVersion(listOfIsoFiles, majorVersionStr, releaseStr); - if (isoFileName == null) { - log.debugFormat("Iso version file {0} has no matching iso file searched by version parts: {1} and {2}.", - versionFile.getAbsolutePath(), - majorVersionStr, - releaseStr); - continue; - } + if (StringUtils.isBlank(isoVersionText)) { + log.infoFormat("Iso version file {0} is empty.", versionFile.getAbsolutePath()); + continue; + } - RpmVersion isoVersion = parseIsoFileVersion(isoFileName, majorVersionStr); - boolean shouldAdd = false; + String[] versionParts = isoVersionText.split(","); + if (versionParts.length < 2) { + log.infoFormat("Iso version file {0} contains invalid content. Excpected: <major-version>,<release> format.", + versionFile.getAbsolutePath()); + continue; + } - if (isoVersion != null && isIsoVersionSupported(isoVersion)) { - if (isoData.getVdsmCompatibilityVersion() != null) { - shouldAdd = isIsoCompatibleForUpgradeByClusterVersion(isoData); - } else if (vdsOsVersion != null) { - if (VdsHandler.isIsoVersionCompatibleForUpgrade(vdsOsVersion, isoVersion)) { + String majorVersionStr = versionParts[0]; + String releaseStr = versionParts[1]; + String isoFileName = getIsoFileNameByVersion(listOfIsoFiles, majorVersionStr, releaseStr); + + if (isoFileName == null) { + log.infoFormat("Iso version file {0} has no matching iso file searched by version parts: {1} and {2}.", + versionFile.getAbsolutePath(), + majorVersionStr, + releaseStr); + continue; + } + + RpmVersion isoVersion = parseIsoFileVersion(isoFileName, majorVersionStr, Info); + boolean shouldAdd = false; + + if (isoVersion != null && isIsoVersionSupported(isoVersion, Info)) { + if (isoData.getVdsmCompatibilityVersion() != null) { + shouldAdd = isIsoCompatibleForUpgradeByClusterVersion(isoData); + } else if (vdsOsVersion != null) { + if (VdsHandler.isIsoVersionCompatibleForUpgrade(vdsOsVersion, isoVersion)) { + shouldAdd = true; + } + } else { shouldAdd = true; } - } else { - shouldAdd = true; } + + if (shouldAdd) { + availableISOsList.add(isoVersion); + } + } catch (RuntimeException e) { + log.errorFormat("Failed to parse ovirt iso version {0} with error {1}", + versionFile.getAbsolutePath(), + ExceptionUtils.getMessage(e)); } - if (shouldAdd) { - availableISOsList.add(isoVersion); - } - } catch (RuntimeException e) { - log.errorFormat("Failed to parse ovirt iso version {0} with error {1}", - versionFile.getAbsolutePath(), - ExceptionUtils.getMessage(e)); } - } + } else { + log.errorFormat("ovirt ISOs directory not found. Search in: {0}", directory.getPath()); } - } else { - log.errorFormat("ovirt ISOs directory not found. Search in: {0}", directory.getPath()); } + log.infoFormat("availableISOsList {0}", availableISOsList); Collections.sort(availableISOsList); getQueryReturnValue().setReturnValue(availableISOsList); } @@ -142,11 +153,20 @@ return vdsOsVersion; } - private RpmVersion parseIsoFileVersion(String isoFileName, String majorVersionStr) { + private RpmVersion parseIsoFileVersion(String isoFileName, String majorVersionStr, OVirtNodeInfo Info) { RpmVersion isoVersion = null; try { String rpmLike = isoFileName.replaceFirst(majorVersionStr + "-", majorVersionStr + "."); - isoVersion = new RpmVersion(rpmLike, getOvirtIsoPrefix(), true); + String ignorePrefix = null; + String tempPrefix[] = Info.getPrefixNode().split(Info.getInfoDelimiter()); + + for(int i=0; i < tempPrefix.length; i++) { + if (rpmLike.toLowerCase().contains(tempPrefix[i])) { + ignorePrefix = tempPrefix[i]; + } + } + + isoVersion = new RpmVersion(rpmLike, ignorePrefix, true); isoVersion.setRpmName(isoFileName); } catch (RuntimeException e) { log.errorFormat("Failed to extract RpmVersion for iso file {0} with major version {1} due to {2}", @@ -167,9 +187,9 @@ return null; } - private static List<String> getListOfIsoFiles(File directory) { + private List<String> getListOfIsoFiles(File directory, OVirtNodeInfo Info) { List<String> isoFileList = new ArrayList<String>(); - File[] filterOvirtFiles = filterOvirtFiles(directory, getIsoPattern()); + File[] filterOvirtFiles = filterOvirtFiles(directory, getIsoPattern(Info)); for (File file : filterOvirtFiles) { isoFileList.add(file.getName()); } @@ -244,9 +264,18 @@ }); } - private static boolean isIsoVersionSupported(Version isoVersion) { - Version supported = new Version(Config.<String> GetValue(ConfigValues.OvirtInitialSupportedIsoVersion)); - return isoVersion.compareTo(supported) >= 0; + private boolean isIsoVersionSupported(Version isoVersion, OVirtNodeInfo Info) { + String supportedVersions[] = Info.getMinimumVersion().split(Info.getInfoDelimiter()); + boolean result = false; + + for(int i=0; i < supportedVersions.length; i++) { + Version supported = new Version(supportedVersions[i]); + if (isoVersion.compareTo(supported) > 0) { + result = true; + break; + } + } + return result; } public VDS getVdsByVdsId(Guid vdsId) { @@ -258,18 +287,13 @@ return vds; } - /** @return The prefix for oVirt ISO files, from the configuration */ - private static String getOvirtIsoPrefix() { - return Config.<String> GetValue(ConfigValues.OvirtIsoPrefix); - } - /** * Returns the pattern for ISO files. * Since the prefix from the configuration may change (reloadable configuration), it is checked each time. * A cached version of pattern is saved, though, to avoid the overhead of re-compiling it. */ - private static Pattern getIsoPattern() { - String expectedPattern = getOvirtIsoPrefix() + "-.*.iso"; + private Pattern getIsoPattern(OVirtNodeInfo Info) { + String expectedPattern = "^(" + Info.getPrefixNode().replace(Info.getInfoDelimiter(), "|") + ")" + ".*.iso"; if (isoPattern == null || !expectedPattern.equals(isoPattern.toString())) { isoPattern = Pattern.compile(expectedPattern); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InstallVdsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InstallVdsCommand.java index b50a699..cf0d25d 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InstallVdsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/InstallVdsCommand.java @@ -2,14 +2,15 @@ import java.io.File; +import java.util.ArrayList; +import java.util.List; + import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.exception.ExceptionUtils; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.InstallVdsParameters; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VDSType; -import org.ovirt.engine.core.common.config.Config; -import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.RpmVersion; import org.ovirt.engine.core.dal.VdcBllMessages; @@ -22,6 +23,9 @@ private static Log log = LogFactory.getLog(InstallVdsCommand.class); private static final String GENERIC_ERROR = "Please refer to engine.log and log files under /var/log/ovirt-engine/host-deploy/ on the engine for further details."; protected String _failureMessage = null; + protected String _isoFullPath = null; + protected String _uploadPath = null; + protected String _upgradeScriptName = null; public InstallVdsCommand(T parameters) { super(parameters); @@ -30,6 +34,13 @@ @Override protected boolean canDoAction() { boolean retValue=true; + + OVirtNodeInfo Info = new OVirtNodeInfo(); + + _uploadPath = Info.getUploadPath(); + _upgradeScriptName = Info.getUpgradeScriptName(); + + if (getVdsId() == null || getVdsId().equals(Guid.Empty)) { addCanDoActionMessage(VdcBllMessages.VDS_INVALID_SERVER_ID); retValue = false; @@ -43,12 +54,12 @@ addCanDoActionMessage(VdcBllMessages.VDS_CANNOT_INSTALL_STATUS_ILLEGAL); retValue = false; } - if (!isIsoFileValid(isoFile)) { + if (!isIsoFileValid(isoFile, Info)) { addCanDoActionMessage(VdcBllMessages.VDS_CANNOT_INSTALL_MISSING_IMAGE_FILE); retValue = false; } else { RpmVersion ovirtHostOsVersion = VdsHandler.getOvirtHostOsVersion(getVds()); - if (ovirtHostOsVersion != null && !isIsoVersionCompatible(ovirtHostOsVersion, isoFile)) { + if (ovirtHostOsVersion != null && !isIsoVersionCompatible(ovirtHostOsVersion, isoFile, Info)) { addCanDoActionMessage(VdcBllMessages.VDS_CANNOT_UPGRADE_BETWEEN_MAJOR_VERSION); addCanDoActionMessage(String.format("$IsoVersion %1$s", ovirtHostOsVersion.getMajor())); retValue = false; @@ -58,9 +69,31 @@ return retValue; } - private boolean isIsoFileValid(String isoFile) { - return StringUtils.isNotBlank(isoFile) - && new File(Config.resolveOVirtISOsRepositoryPath() + File.separator + isoFile).exists(); + private boolean isIsoFileValid(String isoFile, OVirtNodeInfo Info) { + boolean result = false; + String pathRepo = null; + + List<String> reposUpgrade = new ArrayList<String>(); + + String tempRepo[] = Info.getISOsPath().split(Info.getInfoDelimiter()); + for(int i=0; i < tempRepo.length; i++) + reposUpgrade.add(tempRepo[i]); + + if (StringUtils.isNotBlank(isoFile)) { + for (String repo: reposUpgrade) { + pathRepo = repo + "/" + isoFile; + File path = new File(pathRepo); + log.infoFormat("isIsoFileValid - Validating ISO path: {0}", pathRepo); + if (path.exists()) { + _isoFullPath = pathRepo; + result = true; + log.infoFormat("isIsoFileValid: ISO found: {0}", pathRepo); + break; + } + } + } + log.infoFormat("isIsoFileValid: result {0}", result); + return result; } @Override @@ -88,7 +121,9 @@ T parameters = getParameters(); upgrade = new OVirtNodeUpgrade( getVds(), - parameters.getoVirtIsoFile() + _isoFullPath, + _uploadPath, + _upgradeScriptName ); upgrade.setCorrelationId(getCorrelationId()); log.infoFormat( @@ -205,12 +240,12 @@ * the ISO file for upgrade * @return true if ISO is compatible with oVirt node OS version or if failed to resolve Host or RHEV-H version */ - public boolean isIsoVersionCompatible(RpmVersion ovirtOsVersion, String isoFile) { + public boolean isIsoVersionCompatible(RpmVersion ovirtOsVersion, String isoFile, OVirtNodeInfo Info) { boolean retValue = true; if (ovirtOsVersion != null) { try { RpmVersion isoVersion = - new RpmVersion(isoFile, Config.<String> GetValue(ConfigValues.OvirtIsoPrefix), true); + new RpmVersion(isoFile, Info.getPrefixNode(), true); if (!VdsHandler.isIsoVersionCompatibleForUpgrade(ovirtOsVersion, isoVersion)) { retValue = false; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeInfo.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeInfo.java new file mode 100644 index 0000000..3ae117a --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeInfo.java @@ -0,0 +1,46 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; + +public class OVirtNodeInfo { + private String prefixNode; + private String minimumVersion; + private String ISOsPath; + private String infoDelimiter; + private String uploadPath; + private String upgradeScriptName; + + public OVirtNodeInfo() { + this.prefixNode = Config.<String> GetValue(ConfigValues.OvirtIsoPrefix); + this.minimumVersion = Config.<String> GetValue(ConfigValues.OvirtInitialSupportedIsoVersion); + this.ISOsPath = Config.resolveOVirtISOsRepositoryPath(); + this.uploadPath = Config.<String> GetValue(ConfigValues.oVirtUploadPath); + this.upgradeScriptName = Config.<String> GetValue(ConfigValues.oVirtUpgradeScriptName); + this.infoDelimiter = ":"; + } + + public String getUploadPath() { + return this.uploadPath; + } + + public String getUpgradeScriptName() { + return this.upgradeScriptName; + } + + public String getInfoDelimiter() { + return this.infoDelimiter; + } + + public String getPrefixNode() { + return this.prefixNode; + } + + public String getISOsPath() { + return this.ISOsPath; + } + + public String getMinimumVersion() { + return this.minimumVersion; + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeUpgrade.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeUpgrade.java index 68edfbd..13f66f2 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeUpgrade.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/OVirtNodeUpgrade.java @@ -11,8 +11,6 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; -import org.ovirt.engine.core.common.config.Config; -import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; @@ -40,6 +38,9 @@ private VDS _vds; private String _iso; + private String _uploadPath; + private String _upgradeScriptName; + private Exception _failException = null; @@ -94,9 +95,12 @@ * @param vds vds to install. * @param iso image to send. */ - public OVirtNodeUpgrade(VDS vds, String iso) { + public OVirtNodeUpgrade(VDS vds, String iso, String uploadPath, String upgradeScriptName) { _vds = vds; - _iso = Config.resolveOVirtISOsRepositoryPath() + File.separator + iso; + _iso = iso; + _uploadPath = uploadPath; + _upgradeScriptName = upgradeScriptName; + _messages = new InstallerMessages(_vds); _dialog = new EngineSSHDialog(); @@ -155,14 +159,12 @@ ); _dialog.authenticate(); - String dest = Config.<String> GetValue(ConfigValues.oVirtUploadPath); - _messages.post( InstallerMessages.Severity.INFO, String.format( "Sending file %1$s to %2$s", _iso, - dest + _uploadPath ) ); @@ -188,7 +190,7 @@ }, String.format( "mkdir -p '%1$s'", - new File(dest).getParent() + new File(_uploadPath).getParent() ), null ); @@ -198,22 +200,20 @@ } _dialog.sendFile( _iso, - dest + _uploadPath ); - - String command = Config.<String> GetValue(ConfigValues.oVirtUpgradeScriptName); _messages.post( InstallerMessages.Severity.INFO, String.format( "Executing %1$s", - command + _upgradeScriptName ) ); _dialog.executeCommand( this, - command, + _upgradeScriptName, null ); -- To view, visit http://gerrit.ovirt.org/14756 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibfb9dc5d0dc8780b519107acbe0ae866831f782c Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Douglas Schilling Landgraf <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
