/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.scaleio.api; import java.util.concurrent.atomic.AtomicReference; public class ScaleIOConstants { static final String REGEX_CAPACITY = "\\s+\\d+(?:\\.\\d+)?\\s+\\w{2}\\s+\\((.*?)\\)"; static final String REGEX_CAPACITY_NO_SPACE_IN_FRONT = "\\d+(?:\\.\\d+)?\\s+\\w{2}\\s+\\((.*?)\\)"; static final String REGEX_BYTES_CAPACITY = "\\s+(\\d+)\\s+Bytes\\s+"; public static final String API_LOGIN = "/api/login"; public static final String ERROR_CODE = "httpStatusCode"; public static final String GET_SYSTEMS_URI = "/api/types/System/instances"; public static final String GET_SDS_URI = "/api/types/Sds/instances"; public static final String GET_PROTECTION_DOMAIN_URI = "/api/types/ProtectionDomain/instances"; public static final String GET_SDC_URI = "/api/types/Sdc/instances"; public static final String GET_SCSI_INITIATOR_URI = "/api/types/ScsiInitiator/instances"; public static final String VOLUMES_URI = "/api/types/Volume/instances"; public static final String GET_VOLUMES_BYIDS_URI = "/api/types/Volume/instances/action/queryBySelectedIds"; public static final String NAME = "Name"; public static final String POOL_ID = "PoolId"; public static final String THIN_PROVISIONED = "ThinProvisioned"; public static final String THICK_PROVISIONED = "ThickProvisioned"; public static final String SCALEIO_VERSION = "Version"; public static final String SCALEIO_CUSTOMER_ID = "CustomerID"; public static final String SCALEIO_INSTALLATION_ID = "InstallationID"; public static final String SCALEIO_TOTAL_CAPACITY = "TotalCapacity"; public static final String SCALEIO_FREE_CAPACITY = "FreeCapacity"; public static final String SCALEIO_IN_USE_CAPACITY = "InUseCapacity"; public static final String SCALEIO_PROTECTED_CAPACITY = "ProtectedCapacity"; public static final String SCALEIO_SNAPSHOT_CAPACITY = "SnapshotCapacity"; enum PoolCapacityMultiplier { BYTES("Bytes", 1), KB_BYTES("KB", 1024), MB_BYTES("MB", 1048576), GB_BYTES("GB", 1073741824), TB_BYTES("TB", 1099511627776L), PB_BYTES("PB", 1125899906842624L); private String postFix; private long multiplier; PoolCapacityMultiplier(String name, long multipler) { this.postFix = name; this.multiplier = multipler; } static AtomicReference<PoolCapacityMultiplier[]> cachedValues = new AtomicReference<PoolCapacityMultiplier[]>(); static PoolCapacityMultiplier matches(String name) { if (cachedValues.get() == null) { cachedValues.compareAndSet(null, values()); } for (PoolCapacityMultiplier thisMultiplier : cachedValues.get()) { if (name.endsWith(thisMultiplier.postFix)) { return thisMultiplier; } } return null; } String getPostFix() { return postFix; } public long getMultiplier() { return multiplier; } } public static String getAPIBaseURI(String ipAddress, int port) { return String.format("https://%1$s:%2$d", ipAddress, port); } public static String getProtectionDomainStoragePoolURI(String protectionDomainId) { return String.format("/api/instances/ProtectionDomain::%1$s/relationships/StoragePool", protectionDomainId); } public static String getStoragePoolStatsURI(String poolId) { return String.format("/api/instances/StoragePool::%1$s/relationships/Statistics", poolId); } public static String getVolumeURI(String volId) { return String.format("/api/instances/Volume::%1$s", volId); } public static String getRemoveVolumeURI(String volId) { return String.format("/api/instances/Volume::%1$s/action/removeVolume", volId); } public static String getModifyVolumeSizeURI(String volId) { return String.format("/api/instances/Volume::%1$s/action/setVolumeSize", volId); } public static String getMapVolumeToSDCURI(String volId) { return String.format("/api/instances/Volume::%1$s/action/addMappedSdc", volId); } public static String getUnmapVolumeToSDCURI(String volId) { return String.format("/api/instances/Volume::%1$s/action/removeMappedSdc", volId); } public static String getMapVolumeToScsiInitiatorURI(String volId) { return String.format("/api/instances/Volume::%1$s/action/addMappedScsiInitiator", volId); } public static String getUnmapVolumeToScsiInitiatorURI(String volId) { return String.format("/api/instances/Volume::%1$s/action/removeMappedScsiInitiator", volId); } public static String getSnapshotVolumesURI(String systemId) { return String.format("/api/instances/System::%1$s/action/snapshotVolumes", systemId); } public static String getRemoveConsistencyGroupSnapshotsURI(String systemId) { return String.format("/api/instances/System::%1$s/action/removeConsistencyGroupSnapshots", systemId); } }