/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.datadomain.restapi;
import java.net.URI;
/**
* Defines constants relative to using the VPlex HTTP Element Manager API.
*/
public class DataDomainApiConstants {
public static final long B_TO_KB_SHIFT = 10;
public static final long B_TO_MB_SHIFT = 20;
public static final long B_TO_GB_SHIFT = 30;
public static final long B_TO_TB_SHIFT = 40;
public static final long B_TO_PB_SHIFT = 50;
public static final long KB = 1024;
public static final long MB = KB << B_TO_KB_SHIFT;
public static final long GB = MB << B_TO_KB_SHIFT;
public static final long TB = GB << B_TO_KB_SHIFT;
public static final long PB = TB << B_TO_KB_SHIFT;
public static final int STATS_FIRST_PAGE = 0;
public static final int STATS_PAGE_SIZE = 2;
public static final String COLLECTION_EPOCH = "collection_epoch";
public static final String ASCENDING_SORT = COLLECTION_EPOCH;
public static final String DESCENDING_SORT = "-" + COLLECTION_EPOCH;
public static final int EXPORT_ADD = 0;
public static final int EXPORT_DELETE = 1;
public static final int PATH_DOES_NOT_EXIST = 0;
public static final int PATH_EXISTS = 1;
public static final int FILE_DELETED = 1;
public static final int SVC_CODE_SUCCESS = 0;
// Fraction of hard limit
public static double DD_MTREE_SOFT_LIMIT = 0.8;
// Number of Max Mtrees currently supported by DDOS
public static final int DD_MAX_MTREE_LIMIT = 100;
public static final String TOTAL_LOGICAL_CAPACITY = "TOTAL_LOGICAL_CAPACITY";
public static final String USED_LOGICAL_CAPACITY = "USED_LOGICAL_CAPACITY";
public static final String AVAILABLE_LOGICAL_CAPACITY = "AVAILABLE_LOGICAL_CAPACITY";
public static final String TOTAL_PHYSICAL_CAPACITY = "TOTAL_PHYSICAL_CAPACITY";
public static final String USED_PHYSICAL_CAPACITY = "USED_PHYSICAL_CAPACITY";
public static final String AVAILABLE_PHYSICAL_CAPACITY = "AVAILABLE_PHYSICAL_CAPACITY";
public static final String COMPRESSION_FACTOR = "COMPRESSION_FACTOR";
public static final String NUMBER_MTREES = "NUMBER_MTREES";
public static final String SYSTEM_QUOTA = "SYSTEM_QUOTA";
// Constants define the headers required when making HTTP requests to the
// VPlex Management Station using the Element Manager API.
public static final String AUTH_TOKEN = "X-DD-AUTH-TOKEN";
public static final String DETAILS = "details";
public static final String CODE = "code";
public static final String FS_PATH_BASE = "/data/col1/";
// Export options
public static final String ANONYMOUS = "nobody";
public static final String SECURITY_TYPE_OPTION = "sec=";
public static final String ROOT = "root";
public static final String SECURE = "secure"; // Allow connections from ports below 1024
public static final String INSECURE = "insecure";
public static final String ROOT_SQUASH = "root_squash"; // Map root to anonymous
public static final String NO_ROOT_SQUASH = "no_root_squash";
public static final String ALL_SQUASH = "all_squash"; // Map all users to anonymous
public static final String NO_ALL_SQUASH = "no_all_squash";
// Set anonymous uid -- eg anonuid=<uid>, default = 65534
public static final String ANONYMOUS_UID = "anonuid";
// Set anonymous gid -- eg anongid=<gid>, default = 65534
public static final String ANONYMOUS_GID = "anongid";
public static final String NFS_PROTOCOL = "NFS";
public static final String CIFS_PROTOCOL = "CIFS";
public static final String DEFAULT_SECURITY = "sys";
public static final String PERMISSION_RO = "ro";
public static final String PERMISSION_RW = "rw";
// Share options
public static final String BROWSE_ALLOW = "allow";
public static final String BROWSE_DENY = "deny";
public static final String SHARE_READ = "read";
public static final String SHARE_CHANGE = "change";
public static final String SHARE_FULL = "full";
// Stats query parameters
public static final String PAGE = "page";
public static final String PAGE_SIZE = "size";
public static final String DATA_VIEW = "data_view";
public static final String INTERVAL = "interval";
public static final String REQUESTED_INTERVAL_ONLY = "requested_interval_only";
public static final String SORT = "sort";
public static final String FILTER = "filter";
// Constants defining HTTP resource paths.
public static final String DATADOMAIN_PATH = "/rest/v1.0";
public static final String DATADOMAIN_AUTH = DATADOMAIN_PATH + "/auth";
public static final String DATADOMAIN_SERVICE = DATADOMAIN_PATH + "/system";
public static final String DATADOMAIN_SYSTEM_LIST = DATADOMAIN_PATH + "/dd-systems";
private static final String DATADOMAIN_SYSTEM_ = DATADOMAIN_SYSTEM_LIST + "/%s";
public static final String dataDomainSystem(String system) {
return String.format(DATADOMAIN_SYSTEM_, system);
}
private static final String DATADOMAIN_MTREES_ = DATADOMAIN_SYSTEM_ + "/mtrees";
public static final String dataDomainMtrees(String system) {
return String.format(DATADOMAIN_MTREES_, system);
}
private static final String DATADOMAIN_MTREE_ = DATADOMAIN_MTREES_ + "/%s";
public static final String dataDomainMtree(String system, String id) {
return String.format(DATADOMAIN_MTREE_, system, id);
}
private static final String DATADOMAIN_EXPORTS_ = DATADOMAIN_SYSTEM_ + "/protocols/nfs/exports";
public static final String dataDomainExports(String system) {
return String.format(DATADOMAIN_EXPORTS_, system);
}
private static final String DATADOMAIN_EXPORT_ = DATADOMAIN_EXPORTS_ + "/%s";
public static final String dataDomainExport(String system, String id) {
return String.format(DATADOMAIN_EXPORT_, system, id);
}
private static final String DATADOMAIN_SHARES_ = DATADOMAIN_SYSTEM_ + "/protocols/cifs/shares";
public static final String dataDomainShares(String system) {
return String.format(DATADOMAIN_SHARES_, system);
}
private static final String DATADOMAIN_SHARE_ = DATADOMAIN_SHARES_ + "/%s";
public static final String dataDomainShare(String system, String id) {
return String.format(DATADOMAIN_SHARE_, system, id);
}
private static final String DATADOMAIN_SNAPSHOTS_ = DATADOMAIN_SYSTEM_ + "/snapshots";
public static final String dataDomainSnapshots(String system) {
return String.format(DATADOMAIN_SNAPSHOTS_, system);
}
private static final String DATADOMAIN_SNAPSHOT_ = DATADOMAIN_SNAPSHOTS_ + "/%s";
public static final String dataDomainSnapshot(String system, String id) {
return String.format(DATADOMAIN_SNAPSHOT_, system, id);
}
private static final String DATADOMAIN_SYSTEM_STATS_CAPACITY = DATADOMAIN_SYSTEM_ + "/stats/capacity";
public static final String dataDomainSystemStatsCapacity(String system) {
return String.format(DATADOMAIN_SYSTEM_STATS_CAPACITY, system);
}
private static final String DATADOMAIN_MTREE_STATS_ = DATADOMAIN_MTREE_ + "/stats";
public static final String dataDomainMtreeStats(String system, String mtreeId) {
return String.format(DATADOMAIN_MTREE_STATS_, system, mtreeId);
}
private static final String DATADOMAIN_MTREE_STATS_CAPACITY = DATADOMAIN_MTREE_ + "/stats/capacity";
public static final String dataDomainMtreeStatsCapacity(String system, String mtreeId) {
return String.format(DATADOMAIN_MTREE_STATS_CAPACITY, system, mtreeId);
}
private static final String DATADOMAIN_MTREE_STATS_PERFORMANCE = DATADOMAIN_MTREE_ + "/stats/performance";
public static final String dataDomainMtreeStatsPerformance(String system, String mtreeId) {
return String.format(DATADOMAIN_MTREE_STATS_PERFORMANCE, system, mtreeId);
}
public static final URI URI_DATADOMAIN_PATH = URI.create(DATADOMAIN_PATH);
public static final URI URI_DATADOMAIN_AUTH = URI.create(DATADOMAIN_AUTH);
public static final URI URI_DATADOMAIN_SERVICE = URI.create(DATADOMAIN_SERVICE);
public static final URI URI_DATADOMAIN_SYSTEM_LIST = URI.create(DATADOMAIN_SYSTEM_LIST);
private static final String DATADOMAIN_NETWORKS_ = DATADOMAIN_SYSTEM_ + "/networks";
public static final String dataDomainNetworks(String system) {
return String.format(DATADOMAIN_NETWORKS_, system);
}
private static final String DATADOMAIN_NETWORK_ = DATADOMAIN_NETWORKS_ + "/%s";
public static final String dataDomainNetwork(String system, String networkId) {
return String.format(DATADOMAIN_NETWORK_, system, networkId);
}
public static final String newDataDomainBase(String ip, int port) {
return String.format("https://%1$s:%2$d/", ip, port);
}
public static final URI newDataDomainBaseURI(String ip, int port) {
return URI.create(newDataDomainBase(ip, port));
}
public static final URI uriDataDomainSystem(String system) {
return URI.create(dataDomainSystem(system));
}
public static final URI uriDataDomainMtrees(String system) {
return URI.create(dataDomainMtrees(system));
}
public static final URI uriDataDomainMtree(String system, String id) {
return URI.create(dataDomainMtree(system, id));
}
public static final URI uriDataDomainExports(String system) {
return URI.create(dataDomainExports(system));
}
public static final URI uriDataDomainExport(String system, String id) {
return URI.create(dataDomainExport(system, id));
}
public static final URI uriDataDomainShares(String system) {
return URI.create(dataDomainShares(system));
}
public static final URI uriDataDomainShare(String system, String id) {
return URI.create(dataDomainShare(system, id));
}
public static final URI uriDataDomainSnapshots(String system) {
return URI.create(dataDomainSnapshots(system));
}
public static final URI uriDataDomainSnapshot(String system, String id) {
return URI.create(dataDomainSnapshot(system, id));
}
public static final URI uriDataDomainNetworks(String system) {
return URI.create(dataDomainNetworks(system));
}
public static final URI uriDataDomainNetwork(String system, String network) {
return URI.create(dataDomainNetwork(system, network));
}
public static final URI uriDataDomainSystemStatsCapacity(String systemId) {
return URI.create(dataDomainSystemStatsCapacity(systemId));
}
public static final URI uriDataDomainMtreeStats(String system, String id) {
return URI.create(dataDomainMtreeStats(system, id));
}
public static final URI uriDataDomainMtreeStatsCapacity(String system, String id) {
return URI.create(dataDomainMtreeStatsCapacity(system, id));
}
public static final URI uriDataDomainMtreeStatsPerformace(String system, String id) {
return URI.create(dataDomainMtreeStatsPerformance(system, id));
}
}