/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.xtremio.restapi; import java.util.List; import com.emc.storageos.xtremio.restapi.model.response.XtremIOConsistencyGroup; import com.emc.storageos.xtremio.restapi.model.response.XtremIOConsistencyGroupVolInfo; import com.emc.storageos.xtremio.restapi.model.response.XtremIOInitiator; import com.emc.storageos.xtremio.restapi.model.response.XtremIOInitiatorGroup; import com.emc.storageos.xtremio.restapi.model.response.XtremIOLunMap; import com.emc.storageos.xtremio.restapi.model.response.XtremIOObjectInfo; import com.emc.storageos.xtremio.restapi.model.response.XtremIOPerformanceResponse; import com.emc.storageos.xtremio.restapi.model.response.XtremIOPort; import com.emc.storageos.xtremio.restapi.model.response.XtremIOSystem; import com.emc.storageos.xtremio.restapi.model.response.XtremIOTag; import com.emc.storageos.xtremio.restapi.model.response.XtremIOVolume; public interface XtremIODiscoveryClient { /** * Get information on all the clusters configured. * * @return * @throws Exception */ public List<XtremIOSystem> getXtremIOSystemInfo() throws Exception; /** * Get the XMS version * * @return XMS version * @throws Exception */ public String getXtremIOXMSVersion() throws Exception; /** * Get the targets associated with the cluster * * @param clusterName * @return * @throws Exception */ public List<XtremIOPort> getXtremIOPortInfo(String clusterName) throws Exception; /** * Get the initiators of the cluster * * @param clusterName * @return * @throws Exception */ public List<XtremIOInitiator> getXtremIOInitiatorsInfo(String clusterName) throws Exception; /** * Get all the volume and their details for the given cluster * * @param clusterName * @return * @throws Exception */ public List<XtremIOVolume> getXtremIOVolumes(String clusterName) throws Exception; /** * Get the volume details for the passed volume links * * @param volumeLinks * @param clusterName * @return * @throws Exception */ public List<XtremIOVolume> getXtremIOVolumesForLinks(List<XtremIOObjectInfo> volumeLinks, String clusterName) throws Exception; /** * Get all the volume links for the given cluster * * @param clusterName * @return * @throws Exception */ public List<XtremIOObjectInfo> getXtremIOVolumeLinks(String clusterName) throws Exception; /** * Get all the lun map and their details for the given cluster. * * @param clusterName * @return lun maps * @throws Exception */ public List<XtremIOLunMap> getXtremIOLunMaps(String clusterName) throws Exception; /** * Get all the lun map links for the given cluster * * @param clusterName * @return lun map links * @throws Exception */ public List<XtremIOObjectInfo> getXtremIOLunMapLinks(String clusterName) throws Exception; /** * Get the lun map details for the passed lun map links * * @param clusterName * @return lun maps * @throws Exception */ public List<XtremIOLunMap> getXtremIOLunMapsForLinks(List<XtremIOObjectInfo> lunMapLinks, String clusterName) throws Exception; /** * Get all the Consistency groups for a given cluster * * @param clusterName * @return * @throws Exception */ public List<XtremIOObjectInfo> getXtremIOConsistencyGroups(String clusterName) throws Exception; /** * Get all the Consistency groups for a given cluster * * @param cgVolume * @param clusterName * @return * @throws Exception */ public XtremIOConsistencyGroupVolInfo getXtremIOConsistencyGroupInfo(XtremIOObjectInfo cgVolume, String clusterName) throws Exception; /** * Get all the volume folder names of the given cluster. This is relevant only for version 1 REST API * * @return * @throws Exception */ public List<String> getVolumeFolderNames() throws Exception; /** * Get the tag names created in the given cluster. This is relevant only for version 2 REST API. * * @param clusterName * @return * @throws Exception */ public List<String> getTagNames(String clusterName) throws Exception; /** * Get the initiator details for the given initiator name and cluster * * @param initiatorName * @param clusterName * @return * @throws Exception */ public XtremIOInitiator getInitiator(String initiatorName, String clusterName) throws Exception; /** * Get the initiator group details given the initiator group name and cluster * * @param initiatorGroupName * @param clusterName * @return * @throws Exception */ public XtremIOInitiatorGroup getInitiatorGroup(String initiatorGroupName, String clusterName) throws Exception; /** * Get the volume details for the given name and cluster * * @param volumeName * @param clusterName * @return * @throws Exception */ public XtremIOVolume getVolumeDetails(String volumeName, String clusterName) throws Exception; /** * Get the snapshot details for the given name and cluster * * @param snapName * @param clusterName * @return * @throws Exception */ public XtremIOVolume getSnapShotDetails(String snapName, String clusterName) throws Exception; /** * Get the consistency group details for the given name and cluster * * @param cgName * @param clusterName * @return * @throws Exception */ public XtremIOConsistencyGroup getConsistencyGroupDetails(String cgName, String clusterName) throws Exception; /** * Get the cluster details for the given serial number * * @param clusterSerialNumber * @return * @throws Exception */ public XtremIOSystem getClusterDetails(String clusterSerialNumber) throws Exception; /** * Get the tag details for the given name and cluster * * @param tagName * @param tagEntityType * @param clusterName * @return * @throws Exception */ public XtremIOTag getTagDetails(String tagName, String tagEntityType, String clusterName) throws Exception; /** * Get the object performance metrics for the given cluster and entity. * Additional parameters are provided in the order * param-3 name, param-3 value, param-4 name, param-4 value and so on. * * @param clusterName the cluster name * @param entityName the entity name * @param parameters the parameters * @return the xtremio object performance * @throws Exception the exception */ public XtremIOPerformanceResponse getXtremIOObjectPerformance(String clusterName, String entityName, String... parameters) throws Exception; /** * Get the snapshot set details for the given name and cluster * * @param snapshotSetName * @param clusterName * @return * @throws Exception */ public XtremIOConsistencyGroup getSnapshotSetDetails(String snapshotSetName, String clusterName) throws Exception; /** * * @param clusterName * @return * @throws Exception */ public List<XtremIOObjectInfo> getLunMaps(String clusterName) throws Exception; /** * * @param igName * @param clusterName * @return * @throws Exception */ public List<XtremIOObjectInfo> getLunMapsForInitiatorGroup(String igName, String clusterName) throws Exception; /** * * @param index * @param clusterName * @return * @throws Exception */ public XtremIOVolume getVolumeByIndex(String index, String clusterName) throws Exception; }