pmax

package module
v2.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 29, 2024 License: Apache-2.0 Imports: 15 Imported by: 4

README

GO powermax REST library

This directory contains a lighweight Go wrapper around the Unisphere REST API

Unit Tests

Unit Tests exist for the wrapper. These tests do not modify the array.

Running Unit Tests

To run these tests, from this directory, run:

make unit-test
Running Unit Tests With Debugging enabled

To run the tests and be able to attach debugger to the tests, run:

make unit-test-debug

Or this can be run in steps. Build the debug exec:

make unit-test-debug-build

Then to start with debugging:

make dlv-unit-test

The process will listen on port 55555 for a debugger to attach. Once the debugger is attached, the tests will start executing.

Integration Tests

Integration Tests exist for the wrapper as well. These tests WILL MODIFY the array.

Pre-requisites

Before running integration tests, do the following changes in user.env file in inttest folder:

  • Modify the Unisphere endpoint and Symmetrix ID.

  • In the file, are two variables defined:

    • username
    • password

    Either change those variables to match an existing user in Unisphere, or create a new user in Unisphere matching those credentials.

  • The integration test expects certain storage objects to be present on the PowerMax array you are using for integration tests. Examine the file and modify the following declared variables with appropriate names from the PowerMax array in use.

    • Set DefaultFCPortGroup to an existing FC port group from the array.
    • Set DefaultiSCSIPortGroup to an existing iSCSI port group from the array.
    • Set DefaultFCInitiator to an existing FC initiatorID from the array which is not part of any host. Suffix initiatorID with its Dir:Port.
    • Set FCInitiator1,FCInitiator2 to existing FC initiatorIDs from the array which is not part of any host.
    • Set DefaultiSCSIInitiator to an existing iSCSI initiatorID from the array which is not part of any host. Suffix initiatorID with its Dir:Port.
    • Set ISCSIInitiator1,ISCSIInitiator2 to existing iSCSI initiatorIDs from the array which is not part of any host.
Running Integration Tests

To run these tests, from the this directory, run:

For full tests:

make int-test

For an abbreviated set of tests:

make short-int-test

Documentation

Index

Constants

View Source
const (
	XFile          = "file/"
	XFileSystem    = "/file_system"
	XNFSExport     = "/nfs_export"
	XNASServer     = "/nas_server"
	XFileInterface = "/file_interface"
)

constants to be used in APIs

View Source
const (
	// DefaultAPIVersion is the default API version you will get if not specified to NewClientWithArgs.
	// The other supported versions are listed here.
	DefaultAPIVersion = "100"
	// APIVersion91 is the API version corresponding to 91
	APIVersion91 = "91"
)
View Source
const (
	Average      = "Average"
	Performance  = "performance"
	StorageGroup = "/StorageGroup"
	Volume       = "/Volume"
	FileSystem   = "/file/filesystem"
	Metrics      = "/metrics"
	Keys         = "/keys"
	Array        = "/Array"
)

The following constants are for the query of performance metrics for pmax

View Source
const (
	// XEnvironment constant for internal use in URL
	XEnvironment = "/environment/"
	// IncludeMigrations constant for internal use in URL
	IncludeMigrations = "?includeMigrations"
)
View Source
const (
	Replication = "replication/"
	SnapID      = "/snapid"
)

The follow constants are for internal use within the pmax library.

View Source
const (
	SLOProvisioningX       = "sloprovisioning/"
	SnapshotPolicy         = "/snapshot_policy"
	SymmetrixX             = "symmetrix/"
	IteratorX              = "common/Iterator/"
	XPage                  = "/page"
	XVolume                = "/volume"
	XStorageGroup          = "/storagegroup"
	XPortGroup             = "/portgroup"
	XInitiator             = "/initiator"
	XHost                  = "/host"
	XHostGroup             = "/hostgroup"
	XMaskingView           = "/maskingview"
	Emulation              = "FBA"
	MaxVolIdentifierLength = 64
	Migration              = "migration/"
)

The follow constants are for internal use within the pmax library.

View Source
const (
	RESTPrefix          = "univmax/restapi/"
	StorageResourcePool = "srp"
)

The following constants are for internal use of the pmax library.

View Source
const (
	XRDFGroup      = "/rdf_group"
	XFREERDFG      = "/rdf_group_numbers_free"
	XRDFDIR        = "/rdf_director/"
	XRDFONLINEDIR  = "/rdf_director?online=true"
	XRDFPORT       = "/port/"
	XRDFPORTONLINE = "/port?online=true"
	XREMOTEPORT    = "/remote_port"
	ASYNC          = "ASYNC"
	METRO          = "METRO"
	SYNC           = "SYNC"
	XMigration     = "migration/"
	XRemoteSymID   = "?remote_symmetrix_id="
)

The following constants are for internal use within the pmax library.

View Source
const (
	ReplicationX = "replication/"
	PrivateX     = "private/"
	// PrivURLPrefix = RESTPrefix + PrivateX + APIVersion + "/"
	XSnapshot    = "/snapshot"
	XGenereation = "/generation"
)

The following constants are for internal use within the pmax library.

Variables

View Source
var (
	// MAXJobRetryCount is the maximum number of retries to wait on a job.
	// It is a variable so that unit testing can set it lower.
	MAXJobRetryCount = 30
	// JobRetrySleepDuration is the amount of time between retries.
	JobRetrySleepDuration = 3 * time.Second
)
View Source
var Debug = false

Debug is a boolean, when enabled, that enables logging of send payloads, and other debug information. Default to false. It is set true by unit testing.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client is the callers handle to the pmax client library. Obtain a client by calling NewClient.

func (*Client) AddVolumesToProtectedStorageGroup

func (c *Client) AddVolumesToProtectedStorageGroup(ctx context.Context, symID, storageGroupID, remoteSymID, remoteStorageGroupID string, force bool, volumeIDs ...string) error

AddVolumesToProtectedStorageGroup adds one or more volumes (given by their volumeIDs) to a Protected StorageGroup.

func (*Client) AddVolumesToStorageGroup

func (c *Client) AddVolumesToStorageGroup(ctx context.Context, symID, storageGroupID string, force bool, volumeIDs ...string) error

AddVolumesToStorageGroup adds one or more volumes (given by their volumeIDs) to a StorageGroup.

func (*Client) AddVolumesToStorageGroupS

func (c *Client) AddVolumesToStorageGroupS(ctx context.Context, symID, storageGroupID string, force bool, volumeIDs ...string) error

AddVolumesToStorageGroupS adds one or more volumes (given by their volumeIDs) to a StorageGroup.

func (*Client) Authenticate

func (c *Client) Authenticate(ctx context.Context, configConnect *ConfigConnect) error

Authenticate and get API version

func (*Client) CreateFileSystem added in v2.4.0

func (c *Client) CreateFileSystem(ctx context.Context, symID, name, nasServer, serviceLevel string, sizeInMiB int64) (*types.FileSystem, error)

CreateFileSystem creates a file system

func (*Client) CreateHost

func (c *Client) CreateHost(ctx context.Context, symID string, hostID string, initiatorIDs []string, hostFlags *types.HostFlags) (*types.Host, error)

CreateHost creates a host from a list of InitiatorIDs (and optional HostFlags) return returns a types.Host. Initiator IDs do not contain the storage port designations, just the IQN string or FC WWN. Initiator IDs cannot be a member of more than one host.

func (*Client) CreateHostGroup added in v2.2.0

func (c *Client) CreateHostGroup(ctx context.Context, symID string, hostGroupID string, hostIDs []string, hostFlags *types.HostFlags) (*types.HostGroup, error)

CreateHostGroup creates a hostGroup from a list of hostIDs (and optional HostFlags) return returns a types.HostGroup.

func (*Client) CreateMaskingView

func (c *Client) CreateMaskingView(ctx context.Context, symID string, maskingViewID string, storageGroupID string, hostOrhostGroupID string, isHost bool, portGroupID string) (*types.MaskingView, error)

CreateMaskingView creates a masking view and returns the masking view object

func (*Client) CreateMigrationEnvironment added in v2.2.0

func (c *Client) CreateMigrationEnvironment(ctx context.Context, localSymID, remoteSymID string) (*types.MigrationEnv, error)

CreateMigrationEnvironment validates existence of or creates migration environment between local and remote arrays

func (*Client) CreateNFSExport added in v2.4.0

func (c *Client) CreateNFSExport(ctx context.Context, symID string, createNFSExportPayload types.CreateNFSExport) (*types.NFSExport, error)

CreateNFSExport creates a NFSExport

func (*Client) CreatePortGroup

func (c *Client) CreatePortGroup(ctx context.Context, symID string, portGroupID string, dirPorts []types.PortKey, protocol string) (*types.PortGroup, error)

CreatePortGroup - Creates a Port Group

func (*Client) CreateRDFPair

func (c *Client) CreateRDFPair(ctx context.Context, symID, rdfGroupNo, deviceID, rdfMode, rdfType string, establish, exemptConsistency bool) (*types.RDFDevicePairList, error)

CreateRDFPair creates an RDF device pair in the given RDF group

func (*Client) CreateSGMigration added in v2.2.0

func (c *Client) CreateSGMigration(ctx context.Context, localSymID, remoteSymID, storageGroup string) (*types.MigrationSession, error)

CreateSGMigration create migration session on a storage group

func (*Client) CreateSGReplica

func (c *Client) CreateSGReplica(ctx context.Context, symID, remoteSymID, rdfMode, rdfGroupNo, sourceSG, remoteSGName, remoteServiceLevel string, bias bool) (*types.SGRDFInfo, error)

CreateSGReplica creates a storage group on remote array and protect them with given RDF Mode and a given source storage group

func (*Client) CreateSnapshot

func (c *Client) CreateSnapshot(ctx context.Context, symID string, snapID string, sourceVolumeList []types.VolumeList, ttl int64) error

CreateSnapshot creates a snapVx snapshot of a volume or on the list of volumes passed as sourceVolumeList  BothSides flag is used in SRDF usecases to create snapshots on both R1 and R2 side  Star flag is used if the source device is participating in SRDF star mode  Use the Force flag to automate some scenarios to succeed  TimeToLive value ins hour is set on the snapshot to automatically delete the snapshot after target is unlinked

func (*Client) CreateSnapshotPolicy added in v2.3.0

func (c *Client) CreateSnapshotPolicy(ctx context.Context, symID string, snapshotPolicyID string, interval string, offsetMins int32, complianceCountWarn int64,
	complianceCountCritical int64, optionalPayload map[string]interface{},
) (*types.SnapshotPolicy, error)

CreateSnapshotPolicy creates a Snapshot policy and returns a types.SnapshotPolicy.

func (*Client) CreateStorageGroup

func (c *Client) CreateStorageGroup(ctx context.Context, symID, storageGroupID, srpID, serviceLevel string, thickVolumes bool, optionalPayload map[string]interface{}) (*types.StorageGroup, error)

CreateStorageGroup creates a Storage Group given the storageGroupID (name), srpID (storage resource pool), service level, and boolean for thick volumes. If srpID is "None" then serviceLevel and thickVolumes settings are ignored

func (*Client) CreateStorageGroupSnapshot added in v2.3.0

func (c *Client) CreateStorageGroupSnapshot(ctx context.Context, symID string, storageGroupID string, payload *types.CreateStorageGroupSnapshot) (*types.StorageGroupSnap, error)

CreateStorageGroupSnapshot Create a Storage Group Snapshot

func (*Client) CreateVolumeInProtectedStorageGroupS

func (c *Client) CreateVolumeInProtectedStorageGroupS(ctx context.Context, symID, remoteSymID, storageGroupID string, remoteStorageGroupID string, volumeName string, volumeSize interface{}, volOpts map[string]interface{}, opts ...http.Header) (*types.Volume, error)

CreateVolumeInProtectedStorageGroupS takes simplified input arguments to create a volume of a give name and size in a protected storage group. This will add volume in both Local and Remote Storage group This method is run synchronously

func (*Client) CreateVolumeInStorageGroup

func (c *Client) CreateVolumeInStorageGroup(ctx context.Context, symID string, storageGroupID string, volumeName string, volumeSize interface{}, volOpts map[string]interface{}) (*types.Volume, error)

CreateVolumeInStorageGroup creates a volume in the specified Storage Group with a given volumeName and the size of the volume in cylinders.

func (*Client) CreateVolumeInStorageGroupS

func (c *Client) CreateVolumeInStorageGroupS(ctx context.Context, symID, storageGroupID string, volumeName string, volumeSize interface{}, volOpts map[string]interface{}, opts ...http.Header) (*types.Volume, error)

CreateVolumeInStorageGroupS creates a volume in the specified Storage Group with a given volumeName and the size of the volume in cylinders. This method is run synchronously

func (*Client) DeleteFileSystem added in v2.4.0

func (c *Client) DeleteFileSystem(ctx context.Context, symID, fsID string) error

DeleteFileSystem deletes a file system

func (*Client) DeleteHost

func (c *Client) DeleteHost(ctx context.Context, symID string, hostID string) error

DeleteHost deletes a host entry.

func (*Client) DeleteHostGroup added in v2.2.0

func (c *Client) DeleteHostGroup(ctx context.Context, symID string, hostGroupID string) error

DeleteHostGroup deletes a host entry.

func (*Client) DeleteMaskingView

func (c *Client) DeleteMaskingView(ctx context.Context, symID string, maskingViewID string) error

DeleteMaskingView deletes a storage group

func (*Client) DeleteMigrationEnvironment added in v2.2.0

func (c *Client) DeleteMigrationEnvironment(ctx context.Context, localSymID, remoteSymID string) error

DeleteMigrationEnvironment deletes a migration environment

func (*Client) DeleteNASServer added in v2.4.0

func (c *Client) DeleteNASServer(ctx context.Context, symID, nasID string) error

DeleteNASServer deletes a nas server

func (*Client) DeleteNFSExport added in v2.4.0

func (c *Client) DeleteNFSExport(ctx context.Context, symID, nfsExportID string) error

DeleteNFSExport deletes a nfs export

func (*Client) DeletePortGroup

func (c *Client) DeletePortGroup(ctx context.Context, symID string, portGroupID string) error

DeletePortGroup - Deletes a PG

func (*Client) DeleteSnapshot

func (c *Client) DeleteSnapshot(ctx context.Context, symID, snapID string, sourceVolumes []types.VolumeList, generation int64) error

DeleteSnapshot deletes a snapshot from a volume DeviceNameListSource is a list which contains the names of source volumes Symforce flag is used to automate some internal establish scenarios  Star mode is used for devices in SRDF relations  Use the Force flag in acceptable error conditions Restore, when set to true will terminate the Restore and the Snapshot as well  Generation is used to tell which generation of snapshot needs to be deleted and is passed as int64 ExecutionOption tells the Unisphere to perform the operation either in Synchronous mode or Asynchronous mode

func (*Client) DeleteSnapshotPolicy added in v2.3.0

func (c *Client) DeleteSnapshotPolicy(ctx context.Context, symID string, snapshotPolicyID string) error

DeleteSnapshotPolicy deletes a SnapshotPolicy entry.

func (*Client) DeleteSnapshotS

func (c *Client) DeleteSnapshotS(ctx context.Context, symID, snapID string, sourceVolumes []types.VolumeList, generation int64) error

DeleteSnapshotS - Deletes a snapshot synchronously

func (*Client) DeleteStorageGroup

func (c *Client) DeleteStorageGroup(ctx context.Context, symID string, storageGroupID string) error

DeleteStorageGroup deletes a storage group

func (*Client) DeleteStorageGroupSnapshot added in v2.3.0

func (c *Client) DeleteStorageGroupSnapshot(ctx context.Context, symID string, storageGroupID string, snapshotID string, snapID string) error

DeleteStorageGroupSnapshot Delete a Storage Group Snapshot snap

func (*Client) DeleteVolume

func (c *Client) DeleteVolume(ctx context.Context, symID string, volumeID string) error

DeleteVolume deletes a volume given the symmetrix ID and volume ID. Any storage tracks for the volume must have been previously deallocated using InitiateDeallocationOfTracksFromVolume, and the volume must not be a member of any Storage Group.

func (*Client) DeleteVolumeIDsIterator

func (c *Client) DeleteVolumeIDsIterator(ctx context.Context, iter *types.VolumeIterator) error

DeleteVolumeIDsIterator deletes a volume iterator.

func (*Client) ExecuteCreateRDFGroup

func (c *Client) ExecuteCreateRDFGroup(ctx context.Context, symID string, CreateRDFPayload *types.RDFGroupCreate) error

ExecuteCreateRDFGroup creates the RDF Group

func (*Client) ExecuteReplicationActionOnSG

func (c *Client) ExecuteReplicationActionOnSG(ctx context.Context, symID, action, storageGroup, rdfGroup string, force, exemptConsistency, bias bool) error

ExecuteReplicationActionOnSG executes supported replication based actions on the protected SG

func (*Client) ExpandVolume

func (c *Client) ExpandVolume(ctx context.Context, symID string, volumeID string, rdfGNo int, volumeSize interface{}, capUnits ...string) (*types.Volume, error)

ExpandVolume expands an existing volume to a new (larger) size in CYL

func (*Client) GetAddVolumeToSGPayload

func (c *Client) GetAddVolumeToSGPayload(isSync, force bool, remoteSymID, remoteStorageGroupID string, volumeIDs ...string) (payload interface{})

GetAddVolumeToSGPayload returns payload for adding specific volume/s to SG.

func (*Client) GetAllowedArrays

func (c *Client) GetAllowedArrays() []string

GetAllowedArrays returns a slice of arrays that can be manipulated

func (*Client) GetArrayPerfKeys added in v2.2.0

func (c *Client) GetArrayPerfKeys(ctx context.Context) (*types.ArrayKeysResult, error)

GetArrayPerfKeys returns the available timestamp for the array performance

func (*Client) GetCreateRDFPairPayload

func (c *Client) GetCreateRDFPairPayload(devList types.LocalDeviceListCriteria, rdfMode, rdfType string, establish, exemptConsistency bool) *types.CreateRDFPair

GetCreateRDFPairPayload returns payload for adding a replication pair based on replication mode

func (*Client) GetCreateSGReplicaPayload

func (c *Client) GetCreateSGReplicaPayload(remoteSymID string, rdfMode string, rdfgNo int, remoteSGName string, remoteServiceLevel string, establish, bias bool) *types.CreateSGSRDF

GetCreateSGReplicaPayload returns a payload to create a storage group on remote array from local array and protect it with rdfgNo

func (*Client) GetCreateStorageGroupPayload

func (c *Client) GetCreateStorageGroupPayload(storageGroupID, srpID, serviceLevel string, thickVolumes bool, optionalPayload map[string]interface{}) (payload interface{})

GetCreateStorageGroupPayload returns U4P payload for creating storage group

func (*Client) GetCreateVolInSGPayload

func (c *Client) GetCreateVolInSGPayload(volumeSize interface{}, capUnit string, volumeName string, isSync, enableMobility bool, remoteSymID, remoteStorageGroupID string, opts ...http.Header) (payload interface{})

GetCreateVolInSGPayload returns payload for adding volume/s to SG. if remoteSymID is passed then the payload includes RemoteSymmSGInfoParam.

func (*Client) GetDirectorIDList

func (c *Client) GetDirectorIDList(ctx context.Context, symID string) (*types.DirectorIDList, error)

GetDirectorIDList returns a list of all the directors on a given array.

func (*Client) GetFileInterfaceByID added in v2.4.0

func (c *Client) GetFileInterfaceByID(ctx context.Context, symID, interfaceID string) (*types.FileInterface, error)

GetFileInterfaceByID get file system on a symID

func (*Client) GetFileSystemByID added in v2.4.0

func (c *Client) GetFileSystemByID(ctx context.Context, symID, fsID string) (*types.FileSystem, error)

GetFileSystemByID get file system on a symID

func (*Client) GetFileSystemList added in v2.4.0

func (c *Client) GetFileSystemList(ctx context.Context, symID string, query types.QueryParams) (*types.FileSystemIterator, error)

GetFileSystemList get file system list on a symID

func (*Client) GetFileSystemMetricsByID added in v2.7.0

func (c *Client) GetFileSystemMetricsByID(ctx context.Context, symID string, fsID string, metricsQuery []string, firstAvailableTime, lastAvailableTime int64) (*types.FileSystemMetricsIterator, error)

GetFileSystemMetricsByID returns a given FileSystem performance metrics

func (*Client) GetFreeLocalAndRemoteRDFg

func (c *Client) GetFreeLocalAndRemoteRDFg(ctx context.Context, localSymID string, remoteSymID string) (*types.NextFreeRDFGroup, error)

GetFreeLocalAndRemoteRDFg gets the next free RDFg available This API is only available in 10.x

func (*Client) GetHTTPClient

func (c *Client) GetHTTPClient() *http.Client

GetHTTPClient will return an underlying http client

func (*Client) GetHostByID

func (c *Client) GetHostByID(ctx context.Context, symID string, hostID string) (*types.Host, error)

GetHostByID returns a Host given the Symmetrix ID and Host ID.

func (*Client) GetHostGroupByID added in v2.2.0

func (c *Client) GetHostGroupByID(ctx context.Context, symID string, hostGroupID string) (*types.HostGroup, error)

GetHostGroupByID returns a HostGroup given the Symmetrix ID and HostGroup ID.

func (*Client) GetHostGroupList added in v2.2.0

func (c *Client) GetHostGroupList(ctx context.Context, symID string) (*types.HostGroupList, error)

GetHostGroupList returns an HostGroupList object, which contains a list of all the HostGroups.

func (*Client) GetHostList

func (c *Client) GetHostList(ctx context.Context, symID string) (*types.HostList, error)

GetHostList returns an HostList object, which contains a list of all the Hosts.

func (*Client) GetISCSITargets

func (c *Client) GetISCSITargets(ctx context.Context, symID string) ([]ISCSITarget, error)

GetISCSITargets returns list of target addresses

func (*Client) GetInitiatorByID

func (c *Client) GetInitiatorByID(ctx context.Context, symID string, initID string) (*types.Initiator, error)

GetInitiatorByID returns an Initiator given the Symmetrix ID and Initiator ID.

func (*Client) GetInitiatorList

func (c *Client) GetInitiatorList(ctx context.Context, symID string, initiatorHBA string, isISCSI bool, inHost bool) (*types.InitiatorList, error)

GetInitiatorList returns an InitiatorList object, which contains a list of all the Initiators. initiatorHBA, isISCSI, inHost are optional arguments which act as filters for the initiator list

func (*Client) GetJobByID

func (c *Client) GetJobByID(ctx context.Context, symID string, jobID string) (*types.Job, error)

GetJobByID returns a job given the job ID.

func (*Client) GetJobIDList

func (c *Client) GetJobIDList(ctx context.Context, symID string, statusQuery string) ([]string, error)

GetJobIDList returns a list of all the jobs in the symmetrix system. If optional statusQuery is something like JobStatusRunning it will search for running jobs.

func (*Client) GetListOfTargetAddresses

func (c *Client) GetListOfTargetAddresses(ctx context.Context, symID string) ([]string, error)

GetListOfTargetAddresses returns list of target addresses

func (*Client) GetLocalOnlineRDFDirs

func (c *Client) GetLocalOnlineRDFDirs(ctx context.Context, localSymID string) (*types.RDFDirList, error)

GetLocalOnlineRDFDirs gets all Online Directors for the given SYMM

func (*Client) GetLocalOnlineRDFPorts

func (c *Client) GetLocalOnlineRDFPorts(ctx context.Context, rdfDir string, localSymID string) (*types.RDFPortList, error)

GetLocalOnlineRDFPorts gets all Online Ports for the given ONLINE RDF Director

func (*Client) GetLocalRDFPortDetails

func (c *Client) GetLocalRDFPortDetails(ctx context.Context, localSymID string, rdfDir string, rdfPort int) (*types.RDFPortDetails, error)

GetLocalRDFPortDetails gets Local RDF Port Details which are Live on SAN.

func (*Client) GetMaskingViewByID

func (c *Client) GetMaskingViewByID(ctx context.Context, symID string, maskingViewID string) (*types.MaskingView, error)

GetMaskingViewByID returns a masking view given it's identifier (which is the name)

func (*Client) GetMaskingViewConnections

func (c *Client) GetMaskingViewConnections(ctx context.Context, symID string, maskingViewID string, volumeID string) ([]*types.MaskingViewConnection, error)

GetMaskingViewConnections returns the connections of a masking view (optionally for a specific volume id.) Here volume id is the 5 digit volume ID.

func (*Client) GetMaskingViewList

func (c *Client) GetMaskingViewList(ctx context.Context, symID string) (*types.MaskingViewList, error)

GetMaskingViewList returns a list of the MaskingView names.

func (*Client) GetMigrationEnvironment added in v2.2.0

func (c *Client) GetMigrationEnvironment(ctx context.Context, localSymID, remoteSymID string) (*types.MigrationEnv, error)

GetMigrationEnvironment validates existence of or creates migration environment between local and remote arrays

func (*Client) GetNASServerByID added in v2.4.0

func (c *Client) GetNASServerByID(ctx context.Context, symID, nasID string) (*types.NASServer, error)

GetNASServerByID fetch specific NAS server on a symID

func (*Client) GetNASServerList added in v2.4.0

func (c *Client) GetNASServerList(ctx context.Context, symID string, query types.QueryParams) (*types.NASServerIterator, error)

GetNASServerList get NAS Server list on a symID

func (*Client) GetNFSExportByID added in v2.4.0

func (c *Client) GetNFSExportByID(ctx context.Context, symID, nfsExportID string) (*types.NFSExport, error)

GetNFSExportByID get file system on a symID

func (*Client) GetNFSExportList added in v2.4.0

func (c *Client) GetNFSExportList(ctx context.Context, symID string, query types.QueryParams) (*types.NFSExportIterator, error)

GetNFSExportList get NFS export list on a symID

func (*Client) GetNVMeTCPTargets added in v2.7.0

func (c *Client) GetNVMeTCPTargets(ctx context.Context, symID string) ([]NVMeTCPTarget, error)

GetNVMeTCPTargets returns list of target addresses

func (*Client) GetPort

func (c *Client) GetPort(ctx context.Context, symID string, directorID string, portID string) (*types.Port, error)

GetPort returns port details.

func (*Client) GetPortGroupByID

func (c *Client) GetPortGroupByID(ctx context.Context, symID string, portGroupID string) (*types.PortGroup, error)

GetPortGroupByID returns a PortGroup given the Symmetrix ID and Port Group ID.

func (*Client) GetPortGroupList

func (c *Client) GetPortGroupList(ctx context.Context, symID string, portGroupType string) (*types.PortGroupList, error)

GetPortGroupList returns a PortGroupList object, which contains a list of the Port Groups which can be optionally filtered based on type

func (*Client) GetPortList

func (c *Client) GetPortList(ctx context.Context, symID string, directorID string, query string) (*types.PortList, error)

GetPortList returns a list of all the ports on a specified director/array.

func (*Client) GetPrivVolumeByID

func (c *Client) GetPrivVolumeByID(ctx context.Context, symID string, volumeID string) (*types.VolumeResultPrivate, error)

GetPrivVolumeByID returns a Volume structure given the symmetrix and volume ID

func (*Client) GetProtectedStorageGroup

func (c *Client) GetProtectedStorageGroup(ctx context.Context, symID, storageGroup string) (*types.RDFStorageGroup, error)

GetProtectedStorageGroup returns protected storage group given the storage group ID

func (*Client) GetRDFDevicePairInfo

func (c *Client) GetRDFDevicePairInfo(ctx context.Context, symID, rdfGroup, volumeID string) (*types.RDFDevicePair, error)

GetRDFDevicePairInfo returns RDF volume information

func (*Client) GetRDFGroupByID

func (c *Client) GetRDFGroupByID(ctx context.Context, symID, rdfGroupNo string) (*types.RDFGroup, error)

GetRDFGroupByID returns RDF group information given the RDF group number

func (*Client) GetRDFGroupList

func (c *Client) GetRDFGroupList(ctx context.Context, symID string, queryParams types.QueryParams) (*types.RDFGroupList, error)

GetRDFGroupList fetches all RDF group

func (*Client) GetRemoteRDFPortOnSAN

func (c *Client) GetRemoteRDFPortOnSAN(ctx context.Context, localSymID string, rdfDir string, rdfPort string) (*types.RemoteRDFPortDetails, error)

GetRemoteRDFPortOnSAN gets Remote RDF Port on the SAN connected to this Local Array.

func (*Client) GetRemoveVolumeFromSGPayload

func (c *Client) GetRemoveVolumeFromSGPayload(force bool, remoteSymID, remoteStorageGroupID string, volumeIDs ...string) (payload interface{})

GetRemoveVolumeFromSGPayload returns payload for removing volume/s from SG.

func (*Client) GetReplicationCapabilities

func (c *Client) GetReplicationCapabilities(ctx context.Context) (*types.SymReplicationCapabilities, error)

GetReplicationCapabilities returns details about SnapVX and SRDF execution capabilities on the Symmetrix array

func (*Client) GetSnapVolumeList

func (c *Client) GetSnapVolumeList(ctx context.Context, symID string, queryParams types.QueryParams) (*types.SymVolumeList, error)

GetSnapVolumeList returns a list of all snapshot volumes on the array.

func (*Client) GetSnapshotGenerationInfo

func (c *Client) GetSnapshotGenerationInfo(ctx context.Context, symID, volumeID, snapID string, generation int64) (*types.VolumeSnapshotGeneration, error)

GetSnapshotGenerationInfo returns the specific generation info related to a snapshot

func (*Client) GetSnapshotGenerations

func (c *Client) GetSnapshotGenerations(ctx context.Context, symID, volumeID, snapID string) (*types.VolumeSnapshotGenerations, error)

GetSnapshotGenerations returns a list of all the snapshot generation on a specific snapshot

func (*Client) GetSnapshotInfo

func (c *Client) GetSnapshotInfo(ctx context.Context, symID, volumeID, snapID string) (*types.VolumeSnapshot, error)

GetSnapshotInfo returns snapVx information of the specified snapshot

func (*Client) GetSnapshotPolicy added in v2.3.0

func (c *Client) GetSnapshotPolicy(ctx context.Context, symID string, snapshotPolicyID string) (*types.SnapshotPolicy, error)

GetSnapshotPolicy returns a SnapshotPolicy given the Symmetrix ID and SnapshotPolicy ID (which is really a name).

func (*Client) GetSnapshotPolicyList added in v2.3.0

func (c *Client) GetSnapshotPolicyList(ctx context.Context, symID string) (*types.SnapshotPolicyList, error)

GetSnapshotPolicyList returns all the SnapshotPolicy names given the Symmetrix ID

func (*Client) GetStorageGroup

func (c *Client) GetStorageGroup(ctx context.Context, symID string, storageGroupID string) (*types.StorageGroup, error)

GetStorageGroup returns a StorageGroup given the Symmetrix ID and Storage Group ID (which is really a name).

func (*Client) GetStorageGroupIDList

func (c *Client) GetStorageGroupIDList(ctx context.Context, symID, storageGroupIDMatch string, like bool) (*types.StorageGroupIDList, error)

GetStorageGroupIDList returns a list of StorageGroupIds in a StorageGroupIDList type.

func (*Client) GetStorageGroupMetrics added in v2.2.0

func (c *Client) GetStorageGroupMetrics(ctx context.Context, symID string, storageGroupID string, metricsQuery []string, firstAvailableTime, lastAvailableTime int64) (*types.StorageGroupMetricsIterator, error)

GetStorageGroupMetrics returns a list of Storage Group performance metrics

func (*Client) GetStorageGroupMigration added in v2.2.0

func (c *Client) GetStorageGroupMigration(ctx context.Context, localSymID string) (*types.MigrationStorageGroups, error)

GetStorageGroupMigration returns migration sessions on the array

func (*Client) GetStorageGroupMigrationByID added in v2.2.0

func (c *Client) GetStorageGroupMigrationByID(ctx context.Context, localSymID, storageGroupID string) (*types.MigrationSession, error)

GetStorageGroupMigrationByID returns migration details for a storage group

func (*Client) GetStorageGroupPerfKeys added in v2.2.0

func (c *Client) GetStorageGroupPerfKeys(ctx context.Context, symID string) (*types.StorageGroupKeysResult, error)

GetStorageGroupPerfKeys returns the available timestamp for the storage group performance

func (*Client) GetStorageGroupRDFInfo

func (c *Client) GetStorageGroupRDFInfo(ctx context.Context, symID, sgName, rdfGroupNo string) (*types.StorageGroupRDFG, error)

GetStorageGroupRDFInfo returns the of RDF info of protected storage group

func (*Client) GetStorageGroupSnapshotPolicy added in v2.1.0

func (c *Client) GetStorageGroupSnapshotPolicy(ctx context.Context, symID, snapshotPolicyID, storageGroupID string) (*types.StorageGroupSnapshotPolicy, error)

GetStorageGroupSnapshotPolicy returns a StorageGroup snapshotPolicy given the Symmetrix ID, Storage Group ID (which is really a name) and Snapshot Policy ID (which is really a name).

func (*Client) GetStorageGroupSnapshotSnap added in v2.3.0

func (c *Client) GetStorageGroupSnapshotSnap(ctx context.Context, symID string, storageGroupID string, snapshotID, snapID string) (*types.StorageGroupSnap, error)

GetStorageGroupSnapshotSnap Get the details of a storage group snapshot snap

func (*Client) GetStorageGroupSnapshotSnapIDs added in v2.7.0

func (c *Client) GetStorageGroupSnapshotSnapIDs(ctx context.Context, symID string, storageGroupID string, snapshotID string) (*types.SnapID, error)

GetStorageGroupSnapshotSnapIDs Get a list of SnapIDs for a particular snapshot

func (*Client) GetStorageGroupSnapshots added in v2.3.0

func (c *Client) GetStorageGroupSnapshots(ctx context.Context, symID string, storageGroupID string, excludeManualSnaps bool, excludeSlSnaps bool) (*types.StorageGroupSnapshot, error)

GetStorageGroupSnapshots Get All Storage Group Snapshots

func (*Client) GetStoragePool

func (c *Client) GetStoragePool(ctx context.Context, symID string, storagePoolID string) (*types.StoragePool, error)

GetStoragePool returns a StoragePool given the Symmetrix ID and Storage Pool ID

func (*Client) GetStoragePoolList

func (c *Client) GetStoragePoolList(ctx context.Context, symid string) (*types.StoragePoolList, error)

GetStoragePoolList returns a StoragePoolList object, which contains a list of all the Storage Pool names.

func (*Client) GetSymmetrixByID

func (c *Client) GetSymmetrixByID(ctx context.Context, id string) (*types.Symmetrix, error)

GetSymmetrixByID returns the Symmetrix summary structure given a symmetrix id.

func (*Client) GetSymmetrixIDList

func (c *Client) GetSymmetrixIDList(ctx context.Context) (*types.SymmetrixIDList, error)

GetSymmetrixIDList returns a list of all the symmetrix systems known to the connected Unisphere instance.

func (*Client) GetTimeoutContext

func (c *Client) GetTimeoutContext(ctx context.Context) (context.Context, context.CancelFunc)

GetTimeoutContext sets up a timeout of time PmaxTimeout for the returned context. The user caller should call the cancel function that is returned.

func (*Client) GetVolumeByID

func (c *Client) GetVolumeByID(ctx context.Context, symID string, volumeID string) (*types.Volume, error)

GetVolumeByID returns a Volume structure given the symmetrix and volume ID (volume ID is 5-digit hex field)

func (*Client) GetVolumeByIdentifier

func (c *Client) GetVolumeByIdentifier(ctx context.Context, symID, storageGroupID string, volumeName string, volumeSize interface{}, capUnit string) (*types.Volume, error)

GetVolumeByIdentifier on the given symmetrix in specific storage group with a volume name and having size in cylinders

func (*Client) GetVolumeIDList

func (c *Client) GetVolumeIDList(ctx context.Context, symID string, volumeIdentifierMatch string, like bool) ([]string, error)

GetVolumeIDList gets a list of matching volume ids. If volumeIdentifierMatch is the empty string, all volumes are returned. Otherwise the volumes are filtered to volumes whose VolumeIdentifier exactly matches the volumeIdentfierMatch argument (when like is false), or whose VolumeIdentifier contains the volumeIdentifierMatch argument (when like is true).

func (*Client) GetVolumeIDListInStorageGroup

func (c *Client) GetVolumeIDListInStorageGroup(ctx context.Context, symID string, storageGroupID string) ([]string, error)

GetVolumeIDListInStorageGroup - Gets a list of volume in a SG

func (*Client) GetVolumeIDListWithParams added in v2.3.0

func (c *Client) GetVolumeIDListWithParams(ctx context.Context, symID string, queryParams map[string]string) ([]string, error)

GetVolumeIDListWithParams - Gets a list of volume ids with parameters

func (*Client) GetVolumeIDsIterator

func (c *Client) GetVolumeIDsIterator(ctx context.Context, symID string, volumeIdentifierMatch string, like bool) (*types.VolumeIterator, error)

GetVolumeIDsIterator returns a VolumeIDs Iterator. It generally fetches the first page in the result as part of the operation.

func (*Client) GetVolumeIDsIteratorPage

func (c *Client) GetVolumeIDsIteratorPage(ctx context.Context, iter *types.VolumeIterator, from, to int) ([]string, error)

GetVolumeIDsIteratorPage fetches the next page of the iterator's result. From is the starting point. To can be left as 0, or can be set to the last element desired.

func (*Client) GetVolumeIDsIteratorWithParams added in v2.3.0

func (c *Client) GetVolumeIDsIteratorWithParams(ctx context.Context, symID string, queryParams map[string]string) (*types.VolumeIterator, error)

GetVolumeIDsIteratorWithParams returns an iterator of a list of volumes with query parameters For multiple parameters in single field, use ',' to separate the values

func (*Client) GetVolumeSnapInfo

func (c *Client) GetVolumeSnapInfo(ctx context.Context, symID string, volumeID string) (*types.SnapshotVolumeGeneration, error)

GetVolumeSnapInfo returns snapVx information associated with a volume.

func (*Client) GetVolumesInStorageGroupIterator

func (c *Client) GetVolumesInStorageGroupIterator(ctx context.Context, symID string, storageGroupID string) (*types.VolumeIterator, error)

GetVolumesInStorageGroupIterator returns a iterator of a list of volumes associated with a StorageGroup.

func (*Client) GetVolumesMetrics added in v2.2.0

func (c *Client) GetVolumesMetrics(ctx context.Context, symID string, storageGroups string, metricsQuery []string, firstAvailableTime, lastAvailableTime int64) (*types.VolumeMetricsIterator, error)

GetVolumesMetrics returns a list of Volume performance metrics

func (*Client) GetVolumesMetricsByID added in v2.7.0

func (c *Client) GetVolumesMetricsByID(ctx context.Context, symID string, volID string, metricsQuery []string, firstAvailableTime, lastAvailableTime int64) (*types.VolumeMetricsIterator, error)

GetVolumesMetricsByID returns a given Volume performance metrics

func (*Client) InitiateDeallocationOfTracksFromVolume

func (c *Client) InitiateDeallocationOfTracksFromVolume(ctx context.Context, symID string, volumeID string) (*types.Job, error)

InitiateDeallocationOfTracksFromVolume is an asynchrnous operation (that returns a job) to remove tracks from a volume.

func (*Client) IsAllowedArray

func (c *Client) IsAllowedArray(array string) (bool, error)

IsAllowedArray checks to see if we can manipulate the specified array

func (*Client) JobToString

func (c *Client) JobToString(job *types.Job) string

JobToString takes a Job and returns a string giving the job id, status, time completed, and result for easy display.

func (*Client) MigrateStorageGroup added in v2.2.0

func (c *Client) MigrateStorageGroup(ctx context.Context, symID, storageGroupID, srpID, serviceLevel string, thickVolumes bool) (*v100.StorageGroup, error)

MigrateStorageGroup creates a Storage Group given the storageGroupID (name), srpID (storage resource pool), service level, and boolean for thick volumes. If srpID is "None" then serviceLevel and thickVolumes settings are ignored

func (*Client) ModifyFileSystem added in v2.4.0

func (c *Client) ModifyFileSystem(ctx context.Context, symID, fsID string, payload types.ModifyFileSystem) (*types.FileSystem, error)

ModifyFileSystem modifies the given file system

func (*Client) ModifyMigrationSession added in v2.2.0

func (c *Client) ModifyMigrationSession(ctx context.Context, localSymID, action, storageGroup string) error

ModifyMigrationSession does modification to storage group migration session this is used to do commit, sync, cut over on a migration session

func (*Client) ModifyMobilityForVolume added in v2.1.0

func (c *Client) ModifyMobilityForVolume(ctx context.Context, symID string, volumeID string, mobility bool) (*types.Volume, error)

ModifyMobilityForVolume enables/disables mobility for the volume. The volume should not be associated with any maskingview if mobility has to be enabled.

func (*Client) ModifyNASServer added in v2.4.0

func (c *Client) ModifyNASServer(ctx context.Context, symID, nasID string, payload types.ModifyNASServer) (*types.NASServer, error)

ModifyNASServer updates a NAS Server

func (*Client) ModifyNFSExport added in v2.4.0

func (c *Client) ModifyNFSExport(ctx context.Context, symID, nfsExportID string, payload types.ModifyNFSExport) (*types.NFSExport, error)

ModifyNFSExport updates a NFS export

func (*Client) ModifySnapshot

func (c *Client) ModifySnapshot(ctx context.Context, symID string, sourceVol []types.VolumeList,
	targetVol []types.VolumeList, snapID string, action string,
	newSnapID string, generation int64, isCopy bool,
) error

ModifySnapshot executes actions on a snapshot VolumeNameListSource is a list which contains the names of source volumes VolumeNameListTarget is a list which contains the names of target volumes to which the snapshot is linked or going to be linked Symforce flag is used to automate some internal establish scenarios Star mode is used for devices in SRDF relations Use the Force flag in acceptable error conditions Restore, when set to true will terminate the Restore and the Snapshot as well Exact when specified, pairs source and link devices in their ordinal positions within the selection. When not set uses the source and link device selections as a pool that pairs by best match Copy when specified creates an exact copy of the source device, otherwise copies the references Remote when specified propagates the data to the remote mirror of the RDF device Generation is used to tell which generation of snapshot needs to be updated, it is passed as int64 NewSnapshotName specifies the new snapshot name to which the old snapshot will be renamed ExecutionOption tells the Unisphere to perform the operation either in Synchronous mode or Asynchronous mode Action defined the operation which will be performed on the given snapshot

func (*Client) ModifySnapshotS

func (c *Client) ModifySnapshotS(ctx context.Context, symID string, sourceVol []types.VolumeList,
	targetVol []types.VolumeList, snapID string, action string,
	newSnapID string, generation int64, isCopy bool,
) error

ModifySnapshotS executes actions on snapshots synchronously

func (*Client) ModifyStorageGroupSnapshot added in v2.3.0

func (c *Client) ModifyStorageGroupSnapshot(ctx context.Context, symID string, storageGroupID string, snapshotID string, snapID string, payload *types.ModifyStorageGroupSnapshot) (*types.StorageGroupSnap, error)

ModifyStorageGroupSnapshot Modify a Storage Group Snapshot snap

func (*Client) RefreshSymmetrix added in v2.5.1

func (c *Client) RefreshSymmetrix(ctx context.Context, symID string) error

RefreshSymmetrix refreshes symmetrix cache

func (*Client) RemoveVolumesFromProtectedStorageGroup

func (c *Client) RemoveVolumesFromProtectedStorageGroup(ctx context.Context, symID string, storageGroupID, remoteSymID, remoteStorageGroupID string, force bool, volumeIDs ...string) (*types.StorageGroup, error)

RemoveVolumesFromProtectedStorageGroup removes one or more volumes (given by their volumeIDs) from a Protected StorageGroup.

func (*Client) RemoveVolumesFromStorageGroup

func (c *Client) RemoveVolumesFromStorageGroup(ctx context.Context, symID string, storageGroupID string, force bool, volumeIDs ...string) (*types.StorageGroup, error)

RemoveVolumesFromStorageGroup removes one or more volumes (given by their volumeIDs) from a StorageGroup.

func (*Client) RenameMaskingView added in v2.1.0

func (c *Client) RenameMaskingView(ctx context.Context, symID string, maskingViewID string, newName string) (*types.MaskingView, error)

RenameMaskingView - Renames a masking view

func (*Client) RenamePortGroup added in v2.1.0

func (c *Client) RenamePortGroup(ctx context.Context, symID string, portGroupID string, newName string) (*types.PortGroup, error)

RenamePortGroup - Renames a port group

func (*Client) RenameVolume

func (c *Client) RenameVolume(ctx context.Context, symID string, volumeID string, newName string) (*types.Volume, error)

RenameVolume renames a volume.

func (*Client) SetAllowedArrays

func (c *Client) SetAllowedArrays(arrays []string) error

SetAllowedArrays sets the list of arrays which can be manipulated an empty list will allow all arrays to be accessed

func (*Client) SetContextTimeout

func (c *Client) SetContextTimeout(timeout time.Duration) Pmax

SetContextTimeout sets the context timeout value for the API requests

func (*Client) TimeSpent

func (c *Client) TimeSpent(functionName string, startTime time.Time)

TimeSpent - Calculates and prints time spent for a caller function

func (*Client) UpdateHostFlags added in v2.1.0

func (c *Client) UpdateHostFlags(ctx context.Context, symID string, hostID string, hostFlags *types.HostFlags) (*types.Host, error)

UpdateHostFlags updates the host flags

func (*Client) UpdateHostGroupFlags added in v2.2.0

func (c *Client) UpdateHostGroupFlags(ctx context.Context, symID string, hostGroupID string, hostFlags *types.HostFlags) (*types.HostGroup, error)

UpdateHostGroupFlags updates the host flags

func (*Client) UpdateHostGroupHosts added in v2.2.0

func (c *Client) UpdateHostGroupHosts(ctx context.Context, symID string, hostGroupID string, hostIDs []string) (*types.HostGroup, error)

UpdateHostGroupHosts will add/remove the hosts for a host group

func (*Client) UpdateHostGroupName added in v2.2.0

func (c *Client) UpdateHostGroupName(ctx context.Context, symID, oldHostGroupID, newHostGroupID string) (*types.HostGroup, error)

UpdateHostGroupName updates a hostGroup with new hostGroup ID and returns a types.HostGroup.

func (*Client) UpdateHostInitiators

func (c *Client) UpdateHostInitiators(ctx context.Context, symID string, host *types.Host, initiatorIDs []string) (*types.Host, error)

UpdateHostInitiators updates a host from a list of InitiatorIDs and returns a types.Host.

func (*Client) UpdateHostName

func (c *Client) UpdateHostName(ctx context.Context, symID, oldHostID, newHostID string) (*types.Host, error)

UpdateHostName updates a host with new hostID and returns a types.Host.

func (*Client) UpdatePortGroup

func (c *Client) UpdatePortGroup(ctx context.Context, symID string, portGroupID string, ports []types.PortKey) (*types.PortGroup, error)

UpdatePortGroup - Update the PortGroup based on the 'ports' slice. The slice represents the intended configuration of the PortGroup after _successful_ completion of the request. NB: based on the passed in 'ports' the implementation will determine how to update the PortGroup and make appropriate REST calls sequentially. Take this into consideration when making parallel calls.

func (*Client) UpdateSnapshotPolicy added in v2.3.0

func (c *Client) UpdateSnapshotPolicy(ctx context.Context, symID string, action string, snapshotPolicyID string, optionalPayload map[string]interface{}) error

UpdateSnapshotPolicy is a general method to update a SnapshotPolicy (PUT operation) based on the action using a UpdateSnapshotPolicyPayload.

func (*Client) UpdateStorageGroup

func (c *Client) UpdateStorageGroup(ctx context.Context, symID string, storageGroupID string, payload interface{}) (*types.Job, error)

UpdateStorageGroup is a general method to update a StorageGroup (PUT operation) using a UpdateStorageGroupPayload.

func (*Client) UpdateStorageGroupS

func (c *Client) UpdateStorageGroupS(ctx context.Context, symID string, storageGroupID string, payload interface{}) error

UpdateStorageGroupS is a general method to update a StorageGroup (PUT operation) using a UpdateStorageGroupPayload.

func (*Client) WaitOnJobCompletion

func (c *Client) WaitOnJobCompletion(ctx context.Context, symID string, jobID string) (*types.Job, error)

WaitOnJobCompletion waits until a Job reaches a terminal state. The state may be JobStatusSucceeded or JobStatusFailed (it is the caller's responsibility to check.)

func (*Client) WithSymmetrixID

func (c *Client) WithSymmetrixID(symmetrixID string) Pmax

WithSymmetrixID sets the default array for the client

type ConfigConnect

type ConfigConnect struct {
	Endpoint string
	Version  string
	Username string
	Password string
}

ConfigConnect is an argument structure that can be passed to Authenticate. It contains the Endpoint, API Version (which should not be used), Username, and Password.

type ISCSITarget

type ISCSITarget struct {
	IQN       string
	PortalIPs []string
}

ISCSITarget is a structure representing a target IQN and associated IP addresses

type NVMeTCPTarget added in v2.7.0

type NVMeTCPTarget struct {
	NQN       string
	PortalIPs []string
}

NVMeTCPTarget is a structure representing a target NQN and associated IP addresses

type Pmax

type Pmax interface {
	GetHTTPClient() *http.Client

	// Authenticate causes authentication and tests the connection
	Authenticate(ctx context.Context, configConnect *ConfigConnect) error

	// WithSymmetrixID set a default symmetrix ID for the admin client,
	// for it to be added to the request header.
	WithSymmetrixID(symmetrixID string) Pmax

	// GetVolumeIDsIterator generates a VolumeIterator containing the ids of either all or a selected set volumes.
	// The volumeIdentifierMatch string can be used to find a specific volume, or if the like bool is set, all the
	// volumes containing match as part of their VolumeIdentifier.
	GetVolumeIDsIterator(ctx context.Context, symID string, volumeIdentifierMatch string, like bool) (*types.VolumeIterator, error)

	// GetVolumesInStorageGroupIterator returns a list of volumes for a given StorageGroup
	GetVolumesInStorageGroupIterator(ctx context.Context, symID string, storageGroupID string) (*types.VolumeIterator, error)

	// GetVolumeIDsIteratorWithParams returns an iterator of a list of volumes with query parameters
	GetVolumeIDsIteratorWithParams(ctx context.Context, symID string, queryParams map[string]string) (*types.VolumeIterator, error)

	// GetVolumeIDsIteratorPage gets a page of volume ids from a Volume iterator.
	GetVolumeIDsIteratorPage(ctx context.Context, iter *types.VolumeIterator, from, to int) ([]string, error)

	// DeleteVolumeIDsIterator deletes a Volume iterator.
	DeleteVolumeIDsIterator(ctx context.Context, iter *types.VolumeIterator) error

	// GetVolumeIDList provides a simpler interface that returns a []string of volume ids
	// of volumes matching the volumeIdentifierMatch (and like) criteria. It is
	// implemented in terms of GetVolumeIDsIterator, GetVolumeIDsIteratorPage, and DeleteVolumeIDsIterator
	// and handles all the details of the iteration for you.
	GetVolumeIDList(ctx context.Context, symID string, volumeIdentifierMatch string, like bool) ([]string, error)

	// GetVolumeIDListInStorageGroup returns a list of volume IDs that are associated with the StorageGroup
	GetVolumeIDListInStorageGroup(ctx context.Context, symID string, storageGroupID string) ([]string, error)

	// GetVolumeIDListWithParams - Gets a list of volume ids with parameters
	GetVolumeIDListWithParams(ctx context.Context, symID string, queryParams map[string]string) ([]string, error)

	// GetVolumeByID returns a Volume given the volumeID.
	GetVolumeByID(ctx context.Context, symID string, volumeID string) (*types.Volume, error)

	// GetStorageGroupIDList returns a list of all the StorageGroup ids.
	GetStorageGroupIDList(ctx context.Context, symID, storageGroupIDMatch string, like bool) (*types.StorageGroupIDList, error)

	// GetStorageGroup returns a storage group given the StorageGroup id.
	GetStorageGroup(ctx context.Context, symID string, storageGroupID string) (*types.StorageGroup, error)

	// GetStorageGroupSnapshotPolicy returns a storage group snapshot policy details.
	GetStorageGroupSnapshotPolicy(ctx context.Context, symID, snapshotPolicyID, storageGroupID string) (*types.StorageGroupSnapshotPolicy, error)

	// GetStoragePool returns a storage pool given the GetStoragePoolID and SymID.
	GetStoragePool(ctx context.Context, symID string, storagePoolID string) (*types.StoragePool, error)

	// CreateStorageGroup creates a storage group given the Storage group id
	// and returns the storage group object. The storage group can be configured for thick volumes as an option.
	// This is a blocking call and will only return after the storage group has been created
	CreateStorageGroup(ctx context.Context, symID string, storageGroupID string, srpID string, serviceLevel string, thickVolumes bool, optionalPayload map[string]interface{}) (*types.StorageGroup, error)
	// UpdateStorageGroup updates a storage group (i.e. a PUT operation) and should support all the defined
	// operations (but many have not been tested).
	// This is done asynchronously and returns back a job
	UpdateStorageGroup(ctx context.Context, symID string, storageGroupID string, payload interface{}) (*types.Job, error)

	// UpdateStorageGroupS updates a storage group (i.e. a PUT operation) and should support all the defined
	// operations (but many have not been tested).
	// This is done synchronously and doesn't create any jobs
	UpdateStorageGroupS(ctx context.Context, symID string, storageGroupID string, payload interface{}) error

	// CreateVolumeInStorageGroup takes simplified input arguments to create a volume of a give name and size in a particular storage group.
	// This method creates a job and waits on the job to complete.
	CreateVolumeInStorageGroup(ctx context.Context, symID string, storageGroupID string, volumeName string, volumeSize interface{}, volOpts map[string]interface{}) (*types.Volume, error)

	// CreateVolumeInStorageGroupS takes simplified input arguments to create a volume of a give name and size in a particular storage group.
	// This is done synchronously and no jobs are created. HTTP header argument is optional
	CreateVolumeInStorageGroupS(ctx context.Context, symID, storageGroupID string, volumeName string, volumeSize interface{}, volOpts map[string]interface{}, opts ...http.Header) (*types.Volume, error)

	// CreateVolumeInProtectedStorageGroupS takes simplified input arguments to create a volume of a give name and size in a protected storage group.
	// This will add volume in both Local and Remote Storage group
	// This is done synchronously and no jobs are created. HTTP header argument is optional
	CreateVolumeInProtectedStorageGroupS(ctx context.Context, symID, remoteSymID, storageGroupID string, remoteStorageGroupID string, volumeName string, volumeSize interface{}, volOpts map[string]interface{}, opts ...http.Header) (*types.Volume, error)

	// GetStorageGroupSnapshots Gets All Storage Group Snapshots
	GetStorageGroupSnapshots(ctx context.Context, symID string, storageGroupID string, excludeManualSnaps bool, excludeSlSnaps bool) (*types.StorageGroupSnapshot, error)

	// GetStorageGroupSnapshotSnapIDs Gets a list of SnapIDs for a particular snapshot
	GetStorageGroupSnapshotSnapIDs(ctx context.Context, symID string, storageGroupID string, snapshotID string) (*types.SnapID, error)

	// GetStorageGroupSnapshotSnap Gets the details of a storage group snapshot snap
	GetStorageGroupSnapshotSnap(ctx context.Context, symID string, storageGroupID string, snapshotID, snapID string) (*types.StorageGroupSnap, error)

	// CreateStorageGroupSnapshot Creates a Storage Group Snapshot
	CreateStorageGroupSnapshot(ctx context.Context, symID string, storageGroupID string, payload *types.CreateStorageGroupSnapshot) (*types.StorageGroupSnap, error)

	// ModifyStorageGroupSnapshot Modify a Storage Group Snapshot snap
	ModifyStorageGroupSnapshot(ctx context.Context, symID string, storageGroupID string, snapshotID string, snapID string, payload *types.ModifyStorageGroupSnapshot) (*types.StorageGroupSnap, error)

	// DeleteStorageGroupSnapshot Deletes a Storage Group Snapshot snap
	DeleteStorageGroupSnapshot(ctx context.Context, symID string, storageGroupID string, snapshotID string, snapID string) error

	// DeleteStorageGroup deletes a storage group given a storage group id
	DeleteStorageGroup(ctx context.Context, symID string, storageGroupID string) error

	// DeleteMaskingView deletes a masking view given a masking view id
	DeleteMaskingView(ctx context.Context, symID string, maskingViewID string) error

	// RenameMaskingView renames masking view given its identifier (which is the name)
	RenameMaskingView(ctx context.Context, symID string, maskingViewID string, newName string) (*types.MaskingView, error)

	// GetStoragePoolList Gets the list of Storage Pools
	GetStoragePoolList(ctx context.Context, symID string) (*types.StoragePoolList, error)

	// RenameVolume Rename a Volume given the volumeID
	RenameVolume(ctx context.Context, symID string, volumeID string, newName string) (*types.Volume, error)

	// AddVolumesToStorageGroup Add volume(s) asynchronously to a StorageGroup
	AddVolumesToStorageGroup(ctx context.Context, symID, storageGroupID string, force bool, volumeIDs ...string) error
	// AddVolumesToStorageGroupS Add volume(s) synchronously to a StorageGroup
	// This is a blocking call and will only return once the volumes have been added to storage group
	AddVolumesToStorageGroupS(ctx context.Context, symID, storageGroupID string, force bool, volumeIDs ...string) error
	// AddVolumesToProtectedStorageGroup Adds one or more volumes (given by their volumeIDs) to a Protected StorageGroup
	AddVolumesToProtectedStorageGroup(ctx context.Context, symID, storageGroupID, remoteSymID, remoteStorageGroupID string, force bool, volumeIDs ...string) error

	// RemoveVolumesFromStorageGroup Removes volume(s) synchronously from a StorageGroup
	RemoveVolumesFromStorageGroup(ctx context.Context, symID string, storageGroupID string, force bool, volumeIDs ...string) (*types.StorageGroup, error)

	// RemoveVolumesFromProtectedStorageGroup removes one or more volumes (given by their volumeIDs) from a Protected StorageGroup.
	RemoveVolumesFromProtectedStorageGroup(ctx context.Context, symID string, storageGroupID, remoteSymID, remoteStorageGroupID string, force bool, volumeIDs ...string) (*types.StorageGroup, error)

	// InitiateDeallocationOfTracksFromVolume Initiate a job to remove storage space from the volume.
	InitiateDeallocationOfTracksFromVolume(ctx context.Context, symID string, volumeID string) (*types.Job, error)

	// DeleteVolume Deletes a volume
	DeleteVolume(ctx context.Context, symID string, volumeID string) error

	// GetMaskingViewList  returns a list of the MaskingView names.
	GetMaskingViewList(ctx context.Context, symID string) (*types.MaskingViewList, error)

	// GetMaskingViewByID returns a masking view given its identifier (which is the name)
	GetMaskingViewByID(ctx context.Context, symID string, maskingViewID string) (*types.MaskingView, error)

	// GetMaskingViewConnections returns the connections of a masking view (optionally for a specific volume id.)
	// Here volume id is the 5 digit volume ID.
	GetMaskingViewConnections(ctx context.Context, symID string, maskingViewID string, volumeID string) ([]*types.MaskingViewConnection, error)

	// CreateMaskingView creates a masking view given the Masking view id, Storage group id,
	// host id and the port id and returns the masking view object
	CreateMaskingView(ctx context.Context, symID string, maskingViewID string, storageGroupID string, hostOrhostGroupID string, isHost bool, portGroupID string) (*types.MaskingView, error)

	// CreatePortGroup creates a port group given the Port Group id and a list of dir/port ids
	CreatePortGroup(ctx context.Context, symID string, portGroupID string, dirPorts []types.PortKey, protocol string) (*types.PortGroup, error)

	// RenamePortGroup renames port group given it is identifier (which is the name)
	RenamePortGroup(ctx context.Context, symID string, portGroupID string, newName string) (*types.PortGroup, error)

	// GetSymmetrixIDList gets symmetrix list
	GetSymmetrixIDList(ctx context.Context) (*types.SymmetrixIDList, error)
	// GetSymmetrixByID gets symmetrix by given ID
	GetSymmetrixByID(ctx context.Context, id string) (*types.Symmetrix, error)

	// GetJobIDList retrieves the list of jobs on a given Symmetrix.
	// If optional parameter statusQuery is a types.JobStatusRunning or similar string, will search for jobs
	// with a particular status.
	GetJobIDList(ctx context.Context, symID string, statusQuery string) ([]string, error)
	GetJobByID(ctx context.Context, symID string, jobID string) (*types.Job, error)
	WaitOnJobCompletion(ctx context.Context, symID string, jobID string) (*types.Job, error)
	JobToString(job *types.Job) string

	// GetPortGroupList returns a list of all the Port Group ids.
	GetPortGroupList(ctx context.Context, symID string, portGroupType string) (*types.PortGroupList, error)
	// GetPortGroupByID returns a port group given the PortGroup id.
	GetPortGroupByID(ctx context.Context, symID string, portGroupID string) (*types.PortGroup, error)

	// GetInitiatorList returns a list of all the Initiator ids based on filters supplied
	GetInitiatorList(ctx context.Context, symID string, initiatorHBA string, isISCSI bool, inHost bool) (*types.InitiatorList, error)
	// GetInitiatorByID returns an Initiator given the Initiator id.
	GetInitiatorByID(ctx context.Context, symID string, initID string) (*types.Initiator, error)

	// GetHostList returns a list of all the Host ids.
	GetHostList(ctx context.Context, symID string) (*types.HostList, error)
	// GetHostByID returns a Host given the Host id.
	GetHostByID(ctx context.Context, symID string, hostID string) (*types.Host, error)
	// CreateHost creates a host from a list of InitiatorIDs (and optional HostFlags) return returns a types.Host.
	// Initiator IDs do not contain the storage port designations, just the IQN string or FC WWN.
	// Initiator IDs cannot be a member of more than one host.
	CreateHost(ctx context.Context, symID string, hostID string, initiatorIDs []string, hostFlags *types.HostFlags) (*types.Host, error)
	// DeleteHost deletes a host given the hostID.
	DeleteHost(ctx context.Context, symID string, hostID string) error
	// UpdateHostInitiators will update the inititators
	UpdateHostInitiators(ctx context.Context, symID string, host *types.Host, initiatorIDs []string) (*types.Host, error)
	UpdateHostName(ctx context.Context, symID, oldHostID, newHostID string) (*types.Host, error)
	UpdateHostFlags(ctx context.Context, symID string, hostID string, hostFlags *types.HostFlags) (*types.Host, error)
	// GetDirectorIDList returns a list of directors
	GetDirectorIDList(ctx context.Context, symID string) (*types.DirectorIDList, error)
	// GetPortList returns a list of all the ports on a specified director/array.
	GetPortList(ctx context.Context, symID string, directorID string, query string) (*types.PortList, error)
	// GetPort returns port details.
	GetPort(ctx context.Context, symID string, directorID string, portID string) (*types.Port, error)
	// GetListOfTargetAddresses returns an array of all IP addresses which expose iscsi targets.
	GetListOfTargetAddresses(ctx context.Context, symID string) ([]string, error)
	// GetNVMeTCPTargets returns a list of NVMeTCP targets for given sym id
	GetNVMeTCPTargets(ctx context.Context, symID string) ([]NVMeTCPTarget, error)
	// GetISCSITargets returns a list of ISCSI Targets for a given sym id
	GetISCSITargets(ctx context.Context, symID string) ([]ISCSITarget, error)
	// CreateHostGroup creates a hostGroup from a list of hostIDs (and optional HostFlags) and  returns a types.HostGroup.
	CreateHostGroup(ctx context.Context, symID string, hostGroupID string, hostIDs []string, hostFlags *types.HostFlags) (*types.HostGroup, error)
	// GetHostGroupList returns a list of all the HostGroup ids.
	GetHostGroupList(ctx context.Context, symID string) (*types.HostGroupList, error)
	// GetHostGroupByID returns a HostGroup given the HostGroup id.
	GetHostGroupByID(ctx context.Context, symID string, hostGroupID string) (*types.HostGroup, error)
	// DeleteHostGroup deletes a hostGroup given the hostGroupID.
	DeleteHostGroup(ctx context.Context, symID string, hostGroupID string) error
	// UpdateHostGroupName updates a hostGroup with new hostGroup ID and returns a types.HostGroup.
	UpdateHostGroupName(ctx context.Context, symID, oldHostGroupID, newHostGroupID string) (*types.HostGroup, error)
	// UpdateHostGroupFlags updates the hostflags of the hostGroup
	UpdateHostGroupFlags(ctx context.Context, symID string, hostGroupID string, hostFlags *types.HostFlags) (*types.HostGroup, error)
	// UpdateHostGroupHosts will add/remove the hosts for a host group
	UpdateHostGroupHosts(ctx context.Context, symID string, hostGroupID string, hostIDs []string) (*types.HostGroup, error)

	// SetAllowedArrays sets the list of arrays which can be manipulated
	// an empty list will allow all arrays to be accessed
	SetAllowedArrays(arrays []string) error
	// GetAllowedArrays returns a slice of arrays that can be manipulated
	GetAllowedArrays() []string
	// IsAllowedArray checks to see if we can manipulate the specified array
	IsAllowedArray(array string) (bool, error)

	// GetSnapVolumeList returns a list of all snapshot volumes on the array.
	GetSnapVolumeList(ctx context.Context, symID string, queryParams types.QueryParams) (*types.SymVolumeList, error)
	// GetVolumeSnapInfo returns snapVx information associated with a volume.
	GetVolumeSnapInfo(ctx context.Context, symID string, volume string) (*types.SnapshotVolumeGeneration, error)
	// GetSnapshotInfo returns snapVx information of the specified volume
	GetSnapshotInfo(ctx context.Context, symID, volume, SnapID string) (*types.VolumeSnapshot, error)
	// CreateSnapshot creates a snapVx snapshot of a volume using the input parameters
	CreateSnapshot(ctx context.Context, symID string, SnapID string, sourceVolumeList []types.VolumeList, ttl int64) error

	// ModifySnapshot executes actions on a snapshot asynchronously
	// This creates a job and waits on its completion
	ModifySnapshot(ctx context.Context, symID string, sourceVol []types.VolumeList,
		targetVol []types.VolumeList, SnapID string, action string,
		newSnapID string, generation int64, isCopy bool) error

	// ModifySnapshotS executes actions on a snapshot synchronously
	ModifySnapshotS(ctx context.Context, symID string, sourceVol []types.VolumeList,
		targetVol []types.VolumeList, SnapID string, action string,
		newSnapID string, generation int64, isCopy bool) error
	// DeleteSnapshot deletes a snapshot from a volume
	// This is an asynchronous call and waits for the job to complete
	DeleteSnapshot(ctx context.Context, symID, SnapID string, sourceVolumes []types.VolumeList, generation int64) error

	// DeleteSnapshotS deletes a snapshot from a volume
	// This is a synchronous call and doesn't create a job
	DeleteSnapshotS(ctx context.Context, symID, SnapID string, sourceVolumes []types.VolumeList, generation int64) error

	// GetSnapshotGenerations returns a list of all the snapshot generation on a specific snapshot
	GetSnapshotGenerations(ctx context.Context, symID, volume, SnapID string) (*types.VolumeSnapshotGenerations, error)
	// GetSnapshotGenerationInfo returns the specific generation info related to a snapshot
	GetSnapshotGenerationInfo(ctx context.Context, symID, volume, SnapID string, generation int64) (*types.VolumeSnapshotGeneration, error)
	// GetReplicationCapabilities returns details about SnapVX and SRDF execution capabilities on the Symmetrix array
	GetReplicationCapabilities(ctx context.Context) (*types.SymReplicationCapabilities, error)
	// GetPrivVolumeByID returns a Volume structure given the symmetrix and volume ID (volume ID is in WWN format)
	GetPrivVolumeByID(ctx context.Context, symID string, volumeID string) (*types.VolumeResultPrivate, error)

	// DeletePortGroup deletes a port group
	DeletePortGroup(ctx context.Context, symID string, portGroupID string) error
	// UpdatePortGroup updates a port group
	UpdatePortGroup(ctx context.Context, symID string, portGroupID string, ports []types.PortKey) (*types.PortGroup, error)

	// ModifyMobilityForVolume allows enabling/disabling mobility id for the volume
	ModifyMobilityForVolume(ctx context.Context, symID string, volumeID string, mobility bool) (*types.Volume, error)
	// ExpandVolume expands the size of an existing volume
	ExpandVolume(ctx context.Context, symID string, volumeID string, rdfGNo int, volumeSize interface{}, capUnits ...string) (*types.Volume, error)
	// GetCreateVolInSGPayload returns a payload to create a volume in a storage group
	GetCreateVolInSGPayload(volumeSize interface{}, capUnit string, volumeName string, isSync, enableMobility bool, remoteSymID, storageGroupID string, opts ...http.Header) (payload interface{})

	// GetRDFGroupList GetRDFGroupList fetches all RDF group
	GetRDFGroupList(ctx context.Context, symID string, queryParams types.QueryParams) (*types.RDFGroupList, error)
	// GetRDFGroupByID fetches RDF group information
	GetRDFGroupByID(ctx context.Context, symID, rdfGroup string) (*types.RDFGroup, error)

	// GetProtectedStorageGroup returns protected storage group given the storage group ID
	GetProtectedStorageGroup(ctx context.Context, symID, storageGroup string) (*types.RDFStorageGroup, error)
	// CreateSGReplica creates a storage group on remote array and protect them with given RDF Mode and a given source storage group
	CreateSGReplica(ctx context.Context, symID, remoteSymID, rdfMode, rdfGroupNo, sourceSG, remoteSGName, remoteServiceLevel string, bias bool) (*types.SGRDFInfo, error)
	// ExecuteReplicationActionOnSG executes supported replication based actions on the protected SG
	ExecuteReplicationActionOnSG(ctx context.Context, symID, action, storageGroup, rdfGroup string, force, exemptConsistency, bias bool) error

	// CreateRDFPair creates a volume replication pair
	CreateRDFPair(ctx context.Context, symID, rdfGroupNo, deviceID, rdfMode, rdfType string, establish, exemptConsistency bool) (*types.RDFDevicePairList, error)
	// GetRDFDevicePairInfo returns RDF volume information
	GetRDFDevicePairInfo(ctx context.Context, symID, rdfGroup, volumeID string) (*types.RDFDevicePair, error)
	// GetStorageGroupRDFInfo returns the of RDF info of protected storage group
	GetStorageGroupRDFInfo(ctx context.Context, symID, sgName, rdfGroupNo string) (*types.StorageGroupRDFG, error)
	// GetFreeLocalAndRemoteRDFg returns list of Local and Remote Free RDFg in the array
	GetFreeLocalAndRemoteRDFg(ctx context.Context, localSymmID string, remoteSymmID string) (*types.NextFreeRDFGroup, error)
	// ExecuteCreateRDFGroup creates a new RDF group based on payload
	ExecuteCreateRDFGroup(ctx context.Context, symID string, CreateRDFPayload *types.RDFGroupCreate) error
	// GetLocalOnlineRDFDirs returns a List of ONLINE RDF Directors for a given array
	GetLocalOnlineRDFDirs(ctx context.Context, localSymID string) (*types.RDFDirList, error)
	// GetLocalOnlineRDFPorts returs List of ONLINE RDF Ports associated for a given ONLINE RDF Director
	GetLocalOnlineRDFPorts(ctx context.Context, rdfDir string, localSymID string) (*types.RDFPortList, error)
	// GetRemoteRDFPortOnSAN returns an array of Remote RDF Ports on the SAN that are connected to given local RDF Dir:Port
	GetRemoteRDFPortOnSAN(ctx context.Context, localSymID string, rdfDir string, rdfPort string) (*types.RemoteRDFPortDetails, error)
	// GetLocalRDFPortDetails returns details about the local RDFDir:port
	GetLocalRDFPortDetails(ctx context.Context, localSymID string, rdfDir string, rdfPort int) (*types.RDFPortDetails, error)

	// GetStorageGroupMetrics returns the list of required metrics
	GetStorageGroupMetrics(ctx context.Context, symID string, storageGroupID string, metricsQuery []string, firstAvailableDate int64, lastAvailableTime int64) (*types.StorageGroupMetricsIterator, error)
	// GetVolumesMetrics returns the list of volume metrics for specific storage groups
	GetVolumesMetrics(ctx context.Context, symID string, storageGroups string, metricsQuery []string, firstAvailableDate int64, lastAvailableTime int64) (*types.VolumeMetricsIterator, error)
	// GetStorageGroupPerfKeys returns the performance keys of storage group
	GetStorageGroupPerfKeys(ctx context.Context, symID string) (*types.StorageGroupKeysResult, error)
	// GetArrayPerfKeys returns the performance keys of array
	GetArrayPerfKeys(ctx context.Context) (*types.ArrayKeysResult, error)
	// GetVolumesMetricsByID returns a given Volume performance metrics
	GetVolumesMetricsByID(ctx context.Context, symID string, volID string, metricsQuery []string, firstAvailableTime, lastAvailableTime int64) (*types.VolumeMetricsIterator, error)
	// GetFileSystemMetricsByID returns a given FileSystem performance metrics
	GetFileSystemMetricsByID(ctx context.Context, symID string, fsID string, metricsQuery []string, firstAvailableTime, lastAvailableTime int64) (*types.FileSystemMetricsIterator, error)

	// CreateMigrationEnvironment creates a migration environment
	CreateMigrationEnvironment(ctx context.Context, sourceSymID, remoteSymID string) (*types.MigrationEnv, error)
	// CreateSGMigration create migration session on a storage group
	CreateSGMigration(ctx context.Context, localSymID, remoteSymID, storageGroup string) (*types.MigrationSession, error)
	// ModifyMigrationSession updates a migration session on a storage group
	ModifyMigrationSession(ctx context.Context, localSymID, action, storageGroup string) error
	// DeleteMigrationEnvironment deletes a migration environment
	DeleteMigrationEnvironment(ctx context.Context, localSymID, remoteSymID string) error
	// GetMigrationEnvironment returns a migration environment
	GetMigrationEnvironment(ctx context.Context, localSymID, remoteSymID string) (*types.MigrationEnv, error)
	// GetStorageGroupMigration returns migration sessions on the array
	GetStorageGroupMigration(ctx context.Context, localSymID string) (*types.MigrationStorageGroups, error)
	// GetStorageGroupMigrationByID returns migration details for a storage group
	GetStorageGroupMigrationByID(ctx context.Context, localSymID, storageGroupID string) (*types.MigrationSession, error)

	// GetSnapshotPolicy returns a SnapshotPolicy given the Symmetrix ID and SnapshotPolicy ID (which is really a name).
	GetSnapshotPolicy(ctx context.Context, symID string, snapshotPolicyID string) (*types.SnapshotPolicy, error)
	// GetSnapshotPolicyList returns all the SnapshotPolicy names given the Symmetrix ID
	GetSnapshotPolicyList(ctx context.Context, symID string) (*types.SnapshotPolicyList, error)
	// DeleteSnapshotPolicy deletes a SnapshotPolicy entry.
	DeleteSnapshotPolicy(ctx context.Context, symID string, snapshotPolicyID string) error
	// CreateSnapshotPolicy creates a Snapshot policy and returns a types.SnapshotPolicy.
	CreateSnapshotPolicy(ctx context.Context, symID string, snapshotPolicyID string, interval string, offsetMins int32, complianceCountWarn int64,
		complianceCountCritical int64, optionalPayload map[string]interface{}) (*types.SnapshotPolicy, error)
	// UpdateSnapshotPolicy is a general method to update a SnapshotPolicy (PUT operation) based on the action using a UpdateSnapshotPolicyPayload.
	UpdateSnapshotPolicy(ctx context.Context, symID string, action string, snapshotPolicyID string, optionalPayload map[string]interface{}) error

	// GetFileSystemList get file system list on a symID
	GetFileSystemList(ctx context.Context, symID string, query types.QueryParams) (*types.FileSystemIterator, error)
	// GetFileSystemByID get file system  on a symID
	GetFileSystemByID(ctx context.Context, symID, fsID string) (*types.FileSystem, error)
	// CreateFileSystem creates a file system
	CreateFileSystem(ctx context.Context, symID, name, nasServer, serviceLevel string, sizeInMiB int64) (*types.FileSystem, error)
	// ModifyFileSystem  updates a File system
	ModifyFileSystem(ctx context.Context, symID, fsID string, payload types.ModifyFileSystem) (*types.FileSystem, error)
	// DeleteFileSystem deletes a file system
	DeleteFileSystem(ctx context.Context, symID, fsID string) error
	// GetNFSExportList get NFS export list on a symID
	GetNFSExportList(ctx context.Context, symID string, query types.QueryParams) (*types.NFSExportIterator, error)
	// GetNFSExportByID get file system  on a symID
	GetNFSExportByID(ctx context.Context, symID, nfsExportID string) (*types.NFSExport, error)
	// CreateNFSExport creates a NFSExport
	CreateNFSExport(ctx context.Context, symID string, createNFSExportPayload types.CreateNFSExport) (*types.NFSExport, error)
	// ModifyNFSExport updates a NFS export
	ModifyNFSExport(ctx context.Context, symID, nfsExportID string, payload types.ModifyNFSExport) (*types.NFSExport, error)
	// DeleteNFSExport deletes a nfs export
	DeleteNFSExport(ctx context.Context, symID, nfsExportID string) error
	// GetNASServerList get NAS Server list on a symID
	GetNASServerList(ctx context.Context, symID string, query types.QueryParams) (*types.NASServerIterator, error)
	// GetNASServerByID fetch specific NAS server on a symID
	GetNASServerByID(ctx context.Context, symID, nasID string) (*types.NASServer, error)
	// ModifyNASServer updates a NAS Server
	ModifyNASServer(ctx context.Context, symID, nasID string, payload types.ModifyNASServer) (*types.NASServer, error)
	// DeleteNASServer deletes a NAS Server
	DeleteNASServer(ctx context.Context, symID, nasID string) error
	// GetFileInterfaceByID gets a FileInterface
	GetFileInterfaceByID(ctx context.Context, symID, interfaceID string) (*types.FileInterface, error)

	// RefreshSymmetrix refreshes cache on the symID
	RefreshSymmetrix(ctx context.Context, symID string) error
}

Pmax interface has all the externally available functions provided by the pmax client library for the Powermax accessed through Unisphere.

func NewClient

func NewClient() (client Pmax, err error)

NewClient returns a new Client, which is of interface type Pmax. The Client holds state for the connection. Thhe following environment variables define the connection:

CSI_POWERMAX_ENDPOINT - A URL of the form https://1.2.3.4:8443
CSI_POWERMAX_VERSION - should not be used. Defines a particular form of versioning.
CSI_APPLICATION_NAME - Application name which will be used for registering the application with Unisphere REST APIs
CSI_POWERMAX_INSECURE - A boolean indicating whether unvalidated certificates can be accepted. Defaults to true.
CSI_POWERMAX_USECERTS - Indicates whether to use certificates at all. Defaults to true.

func NewClientWithArgs

func NewClientWithArgs(
	endpoint string,
	applicationName string,
	insecure,
	useCerts bool,
) (client Pmax, err error)

NewClientWithArgs allows the user to specify the endpoint, version, application name, insecure boolean, and useCerts boolean as direct arguments rather than receiving them from the enviornment. See NewClient().

type SnapshotAction added in v2.3.0

type SnapshotAction string

SnapshotAction A list of possible Snapshot actions.

const (
	Restore       SnapshotAction = "Restore"       // Restores a snapshot generation
	SetTimeToLive SnapshotAction = "SetTimeToLive" // Set the number of days or hours for a snapshot generation before it auto-terminates
	SetSecure     SnapshotAction = "SetSecure"     // Set the number of days or hours for a snapshot generation to be secure before it auto-terminates
	Link          SnapshotAction = "Link"          // Link a snapshot generation
	Relink        SnapshotAction = "Relink"        // Relink a snapshot generation
	Unlink        SnapshotAction = "Unlink"        // Unlink a snapshot generation
	SetMode       SnapshotAction = "SetMode"       // Set the mode of a linked snapshot generation
	Rename        SnapshotAction = "Rename"        // Rename a snapshot
	Persist       SnapshotAction = "Persist"       // Persist a snapshot policy snapshot
)

Snapshot Actions

Directories

Path Synopsis
types

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL