Versions in this module Expand all Collapse all v0 v0.9.0 Jan 20, 2021 Changes in this version + const CapacityUnit + const DefaultDeviceID + const ErrorCodeUnAuthorized + const ErrorCodeUserIsOffline + const MaxNameLength + const StatusForcedStart + const StatusHealth + const StatusInvalid + const StatusLunCopyReady + const StatusNormal + const StatusPause + const StatusSnapshotActive + const StatusSnapshotInactive + const StatusSynchronizing + const StatusToBeSynchronized + const StatusVolumeReady + const TypeEthernetPort + const TypeHost + const TypeHostGroup + const TypeHyperMetroDomain + const TypeHyperMetroPair + const TypeInitiator + const TypeLUN + const TypeLUNCopy + const TypeLUNGroup + const TypeMappingView + const TypePortGroup + const TypeSnapshot + var DefaultCopyTimeoutSecond = 180 + var DefaultHTTPRetryCount = 10 + var ErrCreatePostValue = "failed to create post value" + var ErrCreateRequest = "failed to create request" + var ErrDecodeBody = "failed to decodeBody" + var ErrEthernetPortNotFound = errors.New("ethernet port is not found") + var ErrHTTPRequestDo = "failed to HTTP request" + var ErrHostGroupNotFound = errors.New("host group is not found") + var ErrHostNotFound = errors.New("host is not found") + var ErrHyperMetroDomainNotFound = errors.New("HyperMetroDomain ID is not found") + var ErrHyperMetroPairNotFound = errors.New("HyperMetroPair is not found") + var ErrInitiatorNotFound = errors.New("initiator is not found") + var ErrLunCopyNotFound = errors.New("LUN Copy is not found") + var ErrLunGroupNotFound = errors.New("LUN Group is not found") + var ErrLunNotFound = errors.New("LUN is not found") + var ErrMappingViewNotFound = errors.New("mapping view is not found") + var ErrPortGroupNotFound = errors.New("port group is not found") + var ErrRequestWithRetry = "failed to request with retry" + var ErrSnapshotNotFound = errors.New("snapshot is not found") + var ErrStoragePoolNotFound = errors.New("storage pool is not found") + var ErrTargetPortNotFound = errors.New("target port is not found") + var ErrTimeoutWait = errors.New("timeout to wait") + var ErrUnAuthorized = errors.New("failed to authorized token") + var PrefixVolumeDescription = "volume-" + func AddAssociateParam(req *http.Request, param *AssociateParam) *http.Request + func AddSearchQuery(req *http.Request, query *SearchQuery) *http.Request + func EncodeLunName(u uuid.UUID) string + func EncodeSnapshotName(u uuid.UUID) string + func ToFilter(param, value string) string + type AssociateMetaData struct + HostLUNID int + type AssociateParam struct + ASSOCIATEOBJID string + ASSOCIATEOBJTYPE int + ID string + TYPE string + type Client struct + LocalDevice *Device + Logger *log.Logger + PortGroupName string + RemoteDevice *Device + func NewClient(localIPs, remoteIPs []string, username, password, portgroupName string, ...) (*Client, error) + func NewClientDefaultToken(localIPs, remoteIPs []string, username, password, portgroupName string, ...) (*Client, error) + func (c *Client) AttachVolume(ctx context.Context, hyperMetroPairID, hostname, iqn string) error + func (c *Client) CreateHyperMetroPair(ctx context.Context, hyperMetroDomainID string, localLunID, remoteLunID int) (*HyperMetroPair, error) + func (c *Client) CreateVolumeFromSource(ctx context.Context, name uuid.UUID, capacityGB int, ...) (*HyperMetroPair, error) + func (c *Client) CreateVolumeRaw(ctx context.Context, name uuid.UUID, capacityGB int, ...) (*HyperMetroPair, error) + func (c *Client) DeleteHyperMetroPair(ctx context.Context, hyperMetroPairID string) error + func (c *Client) DeleteVolume(ctx context.Context, hyperMetroPairID string) error + func (c *Client) DetachVolume(ctx context.Context, hyperMetroPairID string) error + func (c *Client) ExtendVolume(ctx context.Context, hyperMetroPairID string, newVolumeSizeGb int) error + func (c *Client) GetHyperMetroDomains(ctx context.Context, query *SearchQuery) ([]HyperMetroDomain, error) + func (c *Client) GetHyperMetroPair(ctx context.Context, hyperMetroPairID string) (*HyperMetroPair, error) + func (c *Client) GetHyperMetroPairs(ctx context.Context, query *SearchQuery) ([]HyperMetroPair, error) + func (c *Client) GetPortalIPAddresses(ctx context.Context, localPortgroupID, remotePortgroupID int) ([]string, error) + func (c *Client) SetToken() error + func (c *Client) SuspendHyperMetroPair(ctx context.Context, hyperMetroPairID string) error + func (c *Client) SyncHyperMetroPair(ctx context.Context, hyperMetroPairID string) error + type Device struct + Controllers []*url.URL + DeviceID string + HTTPClient *http.Client + Jar *cookiejar.Jar + Logger *log.Logger + Password string + Token string + URL *url.URL + Username string + func (d *Device) ActivateSnapshot(ctx context.Context, snapshotID int) error + func (d *Device) AssociateHost(ctx context.Context, hostgroupID, hostID int) error + func (d *Device) AssociateLun(ctx context.Context, lungroupID, lunID int) error + func (d *Device) AssociateMappingView(ctx context.Context, param AssociateParam) error + func (d *Device) AttachVolume(ctx context.Context, portgroupName, hostname, iqn string, lunID int) error + func (d *Device) CreateCloneLUN(ctx context.Context, lunID int, lunName uuid.UUID) (*LUN, error) + func (d *Device) CreateHost(ctx context.Context, hostname string) (*Host, error) + func (d *Device) CreateHostGroup(ctx context.Context, hostname string) (*HostGroup, error) + func (d *Device) CreateHostGroupWithHost(ctx context.Context, hostname string) (*HostGroup, *Host, error) + func (d *Device) CreateInitiator(ctx context.Context, iqn string) (*Initiator, error) + func (d *Device) CreateLUN(ctx context.Context, u uuid.UUID, capacityGB int, storagePoolName string) (*LUN, error) + func (d *Device) CreateLUNCopy(ctx context.Context, sourceLUNID, targetLUNID int) (*LunCopy, error) + func (d *Device) CreateLUNFromSource(ctx context.Context, sourceLUNID int, name uuid.UUID, capacityGB int, ...) (*LUN, error) + func (d *Device) CreateLUNFromSourceByLUNClone(ctx context.Context, sourceLUNID int, name uuid.UUID, capacityGB int) (*LUN, error) + func (d *Device) CreateLUNFromSourceByLUNCopy(ctx context.Context, sourceLUNID int, name uuid.UUID, capacityGB int, ...) (*LUN, error) + func (d *Device) CreateLUNWithWait(ctx context.Context, u uuid.UUID, capacityGB int, storagePoolName string) (*LUN, error) + func (d *Device) CreateLunGroup(ctx context.Context, hostname string) (*LunGroup, error) + func (d *Device) CreateMappingView(ctx context.Context, hostname string) (*MappingView, error) + func (d *Device) CreateSnapshot(ctx context.Context, lunID int, name uuid.UUID, description string) (*Snapshot, error) + func (d *Device) CreateSnapshotWithWait(ctx context.Context, lunID int, name uuid.UUID, description string) (*Snapshot, error) + func (d *Device) DeleteHost(ctx context.Context, hostID int) error + func (d *Device) DeleteHostGroup(ctx context.Context, hostGroupID int) error + func (d *Device) DeleteHostGroupWithHost(ctx context.Context, hostgroupID int) error + func (d *Device) DeleteInitiator(ctx context.Context, iqn string) error + func (d *Device) DeleteLUN(ctx context.Context, lunID int) error + func (d *Device) DeleteLUNCopy(ctx context.Context, luncopyID int) error + func (d *Device) DeleteLunGroup(ctx context.Context, lungroupID int) error + func (d *Device) DeleteMappingView(ctx context.Context, mappingviewID int) error + func (d *Device) DeleteSnapshot(ctx context.Context, snapshotID int) error + func (d *Device) DetachVolume(ctx context.Context, lunID int) error + func (d *Device) DisAssociateHost(ctx context.Context, hostgroupID, hostID int) error + func (d *Device) DisAssociateLun(ctx context.Context, lungroupID, lunID int) error + func (d *Device) DisAssociateMappingView(ctx context.Context, param AssociateParam) error + func (d *Device) DoMapping(ctx context.Context, mappingview *MappingView, hostgroup *HostGroup, ...) error + func (d *Device) ExpandLUN(ctx context.Context, lunID int, newLunSizeGb int) error + func (d *Device) GetAssociateLUNs(ctx context.Context, query *SearchQuery) ([]LUN, error) + func (d *Device) GetAssociateLunGroups(ctx context.Context, query *SearchQuery) ([]LunGroup, error) + func (d *Device) GetAssociatedEthernetPort(ctx context.Context, query *SearchQuery) ([]EthernetPort, error) + func (d *Device) GetHost(ctx context.Context, hostID int) (*Host, error) + func (d *Device) GetHostAssociatedLUNs(ctx context.Context, hostID int) ([]LUN, error) + func (d *Device) GetHostGroup(ctx context.Context, hostgroupID int) (*HostGroup, error) + func (d *Device) GetHostGroupForce(ctx context.Context, hostname string) (*HostGroup, *Host, error) + func (d *Device) GetHostGroups(ctx context.Context, query *SearchQuery) ([]HostGroup, error) + func (d *Device) GetHostLUNID(ctx context.Context, lunID, hostID int) (int, error) + func (d *Device) GetHosts(ctx context.Context, query *SearchQuery) ([]Host, error) + func (d *Device) GetHyperMetroDomains(ctx context.Context, query *SearchQuery) ([]HyperMetroDomain, error) + func (d *Device) GetInitiator(ctx context.Context, iqn string) (*Initiator, error) + func (d *Device) GetInitiatorForce(ctx context.Context, iqn string) (*Initiator, error) + func (d *Device) GetInitiators(ctx context.Context, query *SearchQuery) ([]Initiator, error) + func (d *Device) GetLUN(ctx context.Context, lunID int) (*LUN, error) + func (d *Device) GetLUNCopy(ctx context.Context, lunCopyID int) (*LunCopy, error) + func (d *Device) GetLUNCopys(ctx context.Context, query *SearchQuery) ([]LunCopy, error) + func (d *Device) GetLUNs(ctx context.Context, query *SearchQuery) ([]LUN, error) + func (d *Device) GetLunGroup(ctx context.Context, lungroupID int) (*LunGroup, error) + func (d *Device) GetLunGroupByLunID(ctx context.Context, lunID int) (*LunGroup, error) + func (d *Device) GetLunGroupForce(ctx context.Context, hostname string) (*LunGroup, error) + func (d *Device) GetLunGroups(ctx context.Context, query *SearchQuery) ([]LunGroup, error) + func (d *Device) GetMappingView(ctx context.Context, mappingviewID int) (*MappingView, error) + func (d *Device) GetMappingViewForce(ctx context.Context, hostname string) (*MappingView, error) + func (d *Device) GetMappingViews(ctx context.Context, query *SearchQuery) ([]MappingView, error) + func (d *Device) GetPortGroup(ctx context.Context, portgroupID int) (*PortGroup, error) + func (d *Device) GetPortGroups(ctx context.Context, query *SearchQuery) ([]PortGroup, error) + func (d *Device) GetPortGroupsAssociate(ctx context.Context, mappingviewID int) ([]PortGroup, error) + func (d *Device) GetPortalIPAddresses(ctx context.Context, portgroupID int) ([]string, error) + func (d *Device) GetSnapshot(ctx context.Context, snapshotID int) (*Snapshot, error) + func (d *Device) GetSnapshots(ctx context.Context, query *SearchQuery) ([]Snapshot, error) + func (d *Device) GetStoragePool(ctx context.Context, storagePoolID int) (*StoragePool, error) + func (d *Device) GetStoragePools(ctx context.Context, query *SearchQuery) ([]StoragePools, error) + func (d *Device) GetSystem(ctx context.Context) (*System, error) + func (d *Device) GetTargetIQNs(ctx context.Context) ([]string, error) + func (d *Device) GetTargetPort(ctx context.Context, query *SearchQuery) ([]TargetPort, error) + func (d *Device) IsAddToMappingViewPortGroup(ctx context.Context, mappingViewID, portgroupID int) (bool, error) + func (d *Device) SplitCloneLUN(ctx context.Context, cloneLUNID int) error + func (d *Device) StartLUNCopy(ctx context.Context, luncopyID int) error + func (d *Device) StartLUNCopyWithWait(ctx context.Context, luncopyID int, timeoutCount int) error + func (d *Device) StopSnapshot(ctx context.Context, snapshotID int) error + func (d *Device) UpdateInitiator(ctx context.Context, iqn string, initiatorParam UpdateInitiatorParam) (*Initiator, error) + type ErrorResp struct + Code int + Description string + Suggestion string + func (e ErrorResp) Error() error + type EthernetPort struct + BONDID string + BONDNAME string + CrcErrors string + DswID string + DswLinkRight string + ERRORPACKETS string + ETHDUPLEX string + ETHNEGOTIATE string + FrameErrors string + FrameLengthErrors string + HEALTHSTATUS string + ID string + INIORTGT string + IPV4ADDR string + IPV4GATEWAY string + IPV4MASK string + IPV6ADDR string + IPV6GATEWAY string + IPV6MASK string + ISCSINAME string + ISCSITCPPORT string + LOCATION string + LOGICTYPE string + LOSTPACKETS string + LightStatus string + MACADDRESS string + MTU string + MaxSpeed string + NAME string + NumberOfInitiators string + OVERFLOWEDPACKETS string + OWNINGCONTROLLER string + PARENTID string + PARENTTYPE int + PORTSWITCH string + RUNNINGSTATUS string + SHARETYPE string + SPEED string + STARTTIME string + SelectType string + TYPE int + WorkModeList string + WorkModeType string + ZoneID string + type Host struct + DESCRIPTION string + HEALTHSTATUS string + ID int + INITIATORNUM string + IP string + ISADD2HOSTGROUP bool + LOCATION string + MODEL string + NAME string + NETWORKNAME string + OPERATIONSYSTEM string + PARENTID string + PARENTNAME string + PARENTTYPE int + RUNNINGSTATUS string + TYPE int + type HostGroup struct + DESCRIPTION string + ID int + ISADD2MAPPINGVIEW bool + NAME string + TYPE int + type HyperMetroDomain struct + CPSID string + CPSNAME string + CPTYPE string + DESCRIPTION string + DOMAINTYPE string + ID string + NAME string + REMOTEDEVICES string + RUNNINGSTATUS string + STANDBYCPSID string + STANDBYCPSNAME string + TYPE int + type HyperMetroPair struct + CAPACITYBYTE string + CGID string + CGNAME string + DOMAINID string + DOMAINNAME string + ENDTIME string + HCRESOURCETYPE string + HDRINGID string + HEALTHSTATUS string + ID string + ISINCG string + ISISOLATION string + ISISOLATIONTHRESHOLDTIME string + ISPRIMARY string + LINKSTATUS string + LOCALDATASTATE string + LOCALHOSTACCESSSTATE string + LOCALOBJID int + LOCALOBJNAME string + RECOVERYPOLICY string + REMOTEDATASTATE string + REMOTEHOSTACCESSSTATE string + REMOTEOBJID int + REMOTEOBJNAME string + RESOURCEWWN string + RUNNINGSTATUS string + SPEED string + STARTTIME string + SYNCDIRECTION string + SYNCLEFTTIME string + SYNCPROGRESS string + TYPE int + WRITESECONDARYTIMEOUT string + type HyperMetroPairParam struct + DOMAINID string + HCRESOURCETYPE string + ISFIRSTSYNC bool + LOCALOBJID string + RECONVERYPOLICY string + REMOTEOBJID string + SPEED int + type Initiator struct + FAILOVERMODE string + HEALTHSTATUS string + ID string + ISFREE string + MULTIPATHTYPE string + OPERATIONSYSTEM string + PARENTID string + PARENTNAME string + PARENTTYPE int + PATHTYPE string + RUNNINGSTATUS string + SPECIALMODETYPE string + TYPE int + USECHAP string + type LUN struct + ALLOCCAPACITY string + ALLOCTYPE string + ASSOCIATEMETADATA string + CAPABILITY string + CAPACITY int + CAPACITYALARMLEVEL string + CLONEIDS string + COMPRESSION string + COMPRESSIONSAVEDCAPACITY string + COMPRESSIONSAVEDRATIO string + DEDUPSAVEDCAPACITY string + DEDUPSAVEDRATIO string + DESCRIPTION string + DRSENABLE string + ENABLECOMPRESSION string + ENABLEISCSITHINLUNTHRESHOLD string + ENABLESMARTDEDUP string + EXPOSEDTOINITIATOR string + EXTENDIFSWITCH string + HEALTHSTATUS string + HYPERCDPSCHEDULEDISABLE string + HyperCdpScheduleID string + ID int + IOCLASSID string + IOPRIORITY string + ISADD2LUNGROUP bool + ISCHECKZEROPAGE string + ISCLONE bool + ISCSITHINLUNTHRESHOLD string + LUNCOPYIDS string + LUNMigrationOrigin string + LunCgID string + MIRRORPOLICY string + MIRRORTYPE string + NAME string + OWNINGCONTROLLER string + PARENTID int + PARENTNAME string + PREFETCHPOLICY string + PREFETCHVALUE string + REMOTELUNID string + REMOTEREPLICATIONIDS string + REPLICATIONCAPACITY string + RUNNINGSTATUS string + RUNNINGWRITEPOLICY string + RemoteLunWwn string + SECTORSIZE string + SNAPSHOTIDS string + SNAPSHOTSCHEDULEID string + SUBTYPE string + THINCAPACITYUSAGE string + TOTALSAVEDCAPACITY string + TOTALSAVEDRATIO string + TYPE int + TakeOverLunWwn string + USAGETYPE string + WORKINGCONTROLLER string + WORKLOADTYPEID string + WORKLOADTYPENAME string + WRITEPOLICY string + WWN string + type LunCopy struct + BASELUN string + COPYPROGRESS string + COPYSPEED string + COPYSTARTTIME string + COPYSTOPTIME string + DESCRIPTION string + HEALTHSTATUS string + ID int + LUNCOPYTYPE string + NAME string + RUNNINGSTATUS string + SOURCELUN string + SOURCELUNCAPACITY string + SOURCELUNCAPACITYBYTE string + SOURCELUNNAME string + SOURCELUNWWN string + SUBTYPE string + TARGETLUN string + TYPE int + type LunGroup struct + ASSOCIATELUNIDLIST string + CAPCITY string + DESCRIPTION string + ID int + ISADD2MAPPINGVIEW bool + NAME string + SMARTQOSPOLICYID string + TYPE int + func (lg *LunGroup) IsAssociated() bool + type MappingView struct + DESCRIPTION string + ENABLEINBANDCOMMAND bool + ID int + INBANDLUNWWN string + NAME string + TYPE int + type ParamCreateCloneLUN struct + CLONESOURCEID int + ISCLONE bool + NAME string + type ParamCreateLUN struct + ALLOCTYPE int + CAPACITY int + DATATRANSFERPOLICY string + DESCRIPTION string + MIRRORPOLICY string + NAME string + PARENTID string + PREFETCHPOLICY string + PREFETCHVALUE string + WORKLOADTYPEID string + WRITEPOLICY string + type PortGroup struct + DESCRIPTION string + ID int + NAME string + TYPE int + type Result struct + Data interface{} + Error ErrorResp + type SearchQuery struct + AssociateObjID string + AssociateObjType string + Filter string + Range string + Type string + func NewSearchQueryHostname(hostname string) *SearchQuery + func NewSearchQueryID(id string) *SearchQuery + func NewSearchQueryName(name string) *SearchQuery + type Session struct + DeviceID string + IBaseToken string + type Snapshot struct + CASCADEDLEVEL string + CASCADEDNUM string + CONSUMEDCAPACITY string + DESCRIPTION string + EXPOSEDTOINITIATOR string + HEALTHSTATUS string + HYPERCOPYIDS string + ID int + IOCLASSID string + IOPRIORITY string + ISSCHEDULEDSNAP string + NAME string + PARENTID int + PARENTNAME string + PARENTTYPE int + ROLLBACKENDTIME string + ROLLBACKRATE string + ROLLBACKSPEED string + ROLLBACKSTARTTIME string + ROLLBACKTARGETOBJID string + ROLLBACKTARGETOBJNAME string + RUNNINGSTATUS string + ReplicationCapacity string + SOURCELUNCAPACITY string + SOURCELUNID string + SOURCELUNNAME string + SUBTYPE string + SnapCgID string + TIMESTAMP string + TYPE int + USERCAPACITY string + WORKINGCONTROLLER string + WORKLOADTYPEID string + WORKLOADTYPENAME string + WWN string + type StoragePool struct + ASSOCIATEOBJID string + AbrasionRate string + DESCRIPTION string + ENCRYPTDISKTYPE string + ENGINEIDLIST string + ENGINEINFO string + EnduranceBalanceStatus string + EngineCapacityDetail string + FREECAPACITY string + FREECAPACITYLIST string + HEALTHSTATUS string + ID string + NAME string + OWNERCONTROLLERLIST string + RUNNINGSTATUS string + RemainLife string + SPARECAPACITY string + SSDDISKNUM string + SSDFREECAPACITY string + SSDHOTSPARESTRATEGY string + SSDSPARECAPACITY string + SSDTOTALCAPACITY string + SSDUSEDCAPACITY string + SSDUSEDSPARECAPACITY string + TIER0DISKTYPE string + TOTALCAPACITY string + TYPE int + USEDCAPACITY string + USEDSPARECAPACITY string + UnbalanceDiskIDList string + type StoragePools struct + AutoDeleteSwitch string + COMPRESSEDCAPACITY string + COMPRESSINVOLVEDCAPACITY string + COMPRESSIONRATE string + DATASPACE string + DEDUPEDCAPACITY string + DEDUPINVOLVEDCAPACITY string + DEDUPLICATIONRATE string + DESCRIPTION string + ENDINGUPTHRESHOLD string + HEALTHSTATUS string + ID int + LUNCONFIGEDCAPACITY string + NAME string + PARENTID string + PARENTNAME string + PARENTTYPE int + PROVISIONINGLIMIT string + PROVISIONINGLIMITSWITCH string + PoolProtectHighThreshold string + PoolProtectLowThreshold string + ProtectSize string + REDUCTIONINVOLVEDCAPACITY string + REPLICATIONCAPACITY string + RUNNINGSTATUS string + SAVECAPACITYRATE string + SPACEREDUCTIONRATE string + THINPROVISIONSAVEPERCENTAGE string + TIER0CAPACITY string + TIER0DISKTYPE string + TIER0RAIDLV string + TOTALLUNWRITECAPACITY string + TYPE int + TotalSizeWithoutSnap string + USAGETYPE string + USERCONSUMEDCAPACITY string + USERCONSUMEDCAPACITYPERCENTAGE string + USERCONSUMEDCAPACITYTHRESHOLD string + USERCONSUMEDCAPACITYWITHOUTMETA string + USERFREECAPACITY string + USERTOTALCAPACITY string + USERWRITEALLOCCAPACITY string + type System struct + CACHEWRITEQUOTA string + CONFIGMODEL string + DESCRIPTION string + DOMAINNAME string + FREEDISKSCAPACITY string + HEALTHSTATUS string + HOTSPAREDISKSCAPACITY string + ID string + LOCATION string + MEMBERDISKSCAPACITY string + MappedLunsCountCapacity string + NAME string + PRODUCTMODE string + PRODUCTVERSION string + PatchVersion string + RUNNINGSTATUS string + SECTORSIZE string + STORAGEPOOLCAPACITY string + STORAGEPOOLFREECAPACITY string + STORAGEPOOLHOSTSPARECAPACITY string + STORAGEPOOLRAWCAPACITY string + STORAGEPOOLUSEDCAPACITY string + THICKLUNSALLOCATECAPACITY string + THICKLUNSUSEDCAPACITY string + THINLUNSALLOCATECAPACITY string + THINLUNSMAXCAPACITY string + THINLUNSUSEDCAPACITY string + TOTALCAPACITY string + TYPE int + UNAVAILABLEDISKSCAPACITY string + USEDCAPACITY string + UnMappedLunsCountCapacity string + UserFreeCapacity string + VASAALTERNATENAME string + VASASUPPORTBLOCK string + VASASUPPORTFILESYSTEM string + VASASUPPORTPROFILE string + WRITETHROUGHSW string + WRITETHROUGHTIME string + Wwn string + type TargetPort struct + ETHPORTID string + ID string + TPGT string + TYPE int + type TimeConversion int + const LocalTime + const UTC + func (tc TimeConversion) String() string + type UpdateInitiatorParam struct + ID string + PARENTID string + PARENTTYPE string + TYPE string + USECHAP string