/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.db.client.model; import com.emc.storageos.db.client.upgrade.CustomMigrationCallback; import com.emc.storageos.db.client.upgrade.callbacks.ComputeImageMigration; import com.emc.storageos.model.valid.EnumType; @Cf("ComputeImage") public class ComputeImage extends DataObject { // DataObject.label - user given name public static final String ESX = "esx"; public static final String ESXI = "esxi"; public static final String RHEL = "rhel"; public static final String CENTOS = "centos"; public static final String ORACLE = "oracle"; private String osName; private String osVersion; private String osUpdate; private String osBuild; private String osArchitecture; private String customName; private String pathToDirectory; // image name private String imageName; // image URL - set by the user private String imageUrl; // ESX, Linux, etc. private String imageType; // success or failure message private String lastImportStatusMessage; private String computeImageStatus = ComputeImageStatus.NOT_AVAILABLE.name(); public static enum ImageType { esx, linux } public static enum ComputeImageStatus { AVAILABLE, NOT_AVAILABLE, IN_PROGRESS } public String fullName() { if (osName == null || osVersion == null) { return null; } StringBuilder sb = new StringBuilder(osName); sb.append('-').append(osVersion); if (osUpdate != null && !osUpdate.equals("")) { sb.append('.').append(osUpdate); } if (osBuild != null && !osBuild.equals("")) { sb.append('-').append(osBuild); } if (osArchitecture != null && !osArchitecture.equals("")) { sb.append('-').append(osArchitecture); } if (customName != null && !customName.equals("")) { sb.append("-cust-").append(customName); } return sb.toString(); } @EnumType(ImageType.class) @Name("imageType") public String getImageType() { return imageType; } public void setImageType(String imageType) { this.imageType = imageType; setChanged("imageType"); } @CustomMigrationCallback(callback = ComputeImageMigration.class) @Name("imageName") public String getImageName() { return imageName; } public void setImageName(String imageName) { this.imageName = imageName; setChanged("imageName"); } @Name("imageUrl") public String getImageUrl() { return imageUrl; } public void setImageUrl(String imageUrl) { this.imageUrl = imageUrl; setChanged("imageUrl"); } @EnumType(ComputeImageStatus.class) @Name("computeImageStatus") public String getComputeImageStatus() { return computeImageStatus; } public void setComputeImageStatus(String computeImageStatus) { this.computeImageStatus = computeImageStatus; setChanged("computeImageStatus"); } @Name("lastImportStatusMessage") public String getLastImportStatusMessage() { return lastImportStatusMessage; } public void setLastImportStatusMessage(String lastImportStatusMessage) { this.lastImportStatusMessage = lastImportStatusMessage; setChanged("lastImportStatusMessage"); } @Name("osName") public String getOsName() { return osName; } public void setOsName(String osName) { this.osName = osName; setChanged("osName"); } @Name("osVersion") public String getOsVersion() { return osVersion; } public void setOsVersion(String osVersion) { this.osVersion = osVersion; setChanged("osVersion"); } @Name("osUpdate") public String getOsUpdate() { return osUpdate; } public void setOsUpdate(String osUpdate) { this.osUpdate = osUpdate; setChanged("osUpdate"); } @Name("osBuild") public String getOsBuild() { return osBuild; } public void setOsBuild(String osBuild) { this.osBuild = osBuild; setChanged("osBuild"); } @Name("osArchitecture") public String getOsArchitecture() { return osArchitecture; } public void setOsArchitecture(String osArchitecture) { this.osArchitecture = osArchitecture; setChanged("osArchitecture"); } @Name("customName") public String getCustomName() { return customName; } public void setCustomName(String customName) { this.customName = customName; setChanged("customName"); } @Name("pathToDirectory") public String getPathToDirectory() { return pathToDirectory; } public void setPathToDirectory(String pathToDirectory) { this.pathToDirectory = pathToDirectory; setChanged("pathToDirectory"); } /********************************** * Utility methods **********************************/ public boolean _isEsxi6x() { if (osName.equals(ESXI) && osVersion.startsWith("6.")) { return true; } return false; } public boolean _isEsxi5x() { if (osName.equals(ESXI) && osVersion.startsWith("5.")) { return true; } return false; } public boolean _isEsxi4x() { if (osName.equals(ESXI) && osVersion.startsWith("4.")) { return true; } return false; } public boolean _isEsx4x() { if (osName.equals(ESX) && osVersion.startsWith("4.")) { return true; } return false; } public boolean _isRedhat() { if (osName.equals(RHEL)) { return true; } return false; } public boolean _isCentos() { if (osName.equals(CENTOS)) { return true; } return false; } public boolean _isOracle() { if (osName.equals(ORACLE)) { return true; } return false; } public boolean _isLinux() { return _isRedhat() || _isCentos() || _isOracle(); } }