github.com/vmware/govmomi@v0.37.2/sms/types/types.go (about)

     1  /*
     2  Copyright (c) 2014-2023 VMware, Inc. All Rights Reserved.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package types
    18  
    19  import (
    20  	"reflect"
    21  	"time"
    22  
    23  	"github.com/vmware/govmomi/vim25/types"
    24  )
    25  
    26  // This spec contains information needed for queryActiveAlarm API to filter the result.
    27  //
    28  // This structure may be used only with operations rendered under `/sms`.
    29  type AlarmFilter struct {
    30  	types.DynamicData
    31  
    32  	// The status of the alarm to search for.
    33  	//
    34  	// Should be one of
    35  	// `SmsAlarmStatus_enum`. If not specified, all status values
    36  	// should be considered.
    37  	AlarmStatus string `xml:"alarmStatus,omitempty" json:"alarmStatus,omitempty"`
    38  	// The status of the alarm to search for.
    39  	//
    40  	// Should be one of
    41  	// `AlarmType_enum`. If not specified, all alarm types
    42  	// should be considered.
    43  	AlarmType string `xml:"alarmType,omitempty" json:"alarmType,omitempty"`
    44  	// The entityType of interest, VASA provider should
    45  	// return all active alarms of this type when `AlarmFilter.entityId`
    46  	// is not set.
    47  	//
    48  	// See `SmsEntityType_enum`.
    49  	EntityType string `xml:"entityType,omitempty" json:"entityType,omitempty"`
    50  	// The identifiers of the entities of interest.
    51  	//
    52  	// If set, all entities must be
    53  	// of the same `SmsEntityType_enum` and it should be set in
    54  	// `AlarmFilter.entityType`. VASA provider can skip listing the missing entities.
    55  	EntityId []types.AnyType `xml:"entityId,omitempty,typeattr" json:"entityId,omitempty"`
    56  	// The page marker used for query pagination.
    57  	//
    58  	// This is an opaque string that
    59  	// will be set based on the value returned by the VASA provider - see
    60  	// `AlarmResult.pageMarker`. For initial request this should be set to
    61  	// null, indicating request for the first page.
    62  	PageMarker string `xml:"pageMarker,omitempty" json:"pageMarker,omitempty"`
    63  }
    64  
    65  func init() {
    66  	types.Add("sms:AlarmFilter", reflect.TypeOf((*AlarmFilter)(nil)).Elem())
    67  }
    68  
    69  // Contains result for queryActiveAlarm API.
    70  //
    71  // This structure may be used only with operations rendered under `/sms`.
    72  type AlarmResult struct {
    73  	types.DynamicData
    74  
    75  	// Resulting storage alarms.
    76  	StorageAlarm []StorageAlarm `xml:"storageAlarm,omitempty" json:"storageAlarm,omitempty"`
    77  	// The page marker used for query pagination.
    78  	//
    79  	// This is an opaque string that
    80  	// will be set by the VASA provider. The client will set the same value in
    81  	// `AlarmFilter.pageMarker` to query the next page. VP should unset
    82  	// this value to indicate the end of page.
    83  	PageMarker string `xml:"pageMarker,omitempty" json:"pageMarker,omitempty"`
    84  }
    85  
    86  func init() {
    87  	types.Add("sms:AlarmResult", reflect.TypeOf((*AlarmResult)(nil)).Elem())
    88  }
    89  
    90  // Thrown if the object is already at the desired state.
    91  //
    92  // This is always a warning.
    93  //
    94  // This structure may be used only with operations rendered under `/sms`.
    95  type AlreadyDone struct {
    96  	SmsReplicationFault
    97  }
    98  
    99  func init() {
   100  	types.Add("sms:AlreadyDone", reflect.TypeOf((*AlreadyDone)(nil)).Elem())
   101  }
   102  
   103  type AlreadyDoneFault AlreadyDone
   104  
   105  func init() {
   106  	types.Add("sms:AlreadyDoneFault", reflect.TypeOf((*AlreadyDoneFault)(nil)).Elem())
   107  }
   108  
   109  // A boxed array of `BackingStoragePool`. To be used in `Any` placeholders.
   110  type ArrayOfBackingStoragePool struct {
   111  	BackingStoragePool []BackingStoragePool `xml:"BackingStoragePool,omitempty" json:"_value"`
   112  }
   113  
   114  func init() {
   115  	types.Add("sms:ArrayOfBackingStoragePool", reflect.TypeOf((*ArrayOfBackingStoragePool)(nil)).Elem())
   116  }
   117  
   118  // A boxed array of `DatastoreBackingPoolMapping`. To be used in `Any` placeholders.
   119  type ArrayOfDatastoreBackingPoolMapping struct {
   120  	DatastoreBackingPoolMapping []DatastoreBackingPoolMapping `xml:"DatastoreBackingPoolMapping,omitempty" json:"_value"`
   121  }
   122  
   123  func init() {
   124  	types.Add("sms:ArrayOfDatastoreBackingPoolMapping", reflect.TypeOf((*ArrayOfDatastoreBackingPoolMapping)(nil)).Elem())
   125  }
   126  
   127  // A boxed array of `DatastorePair`. To be used in `Any` placeholders.
   128  type ArrayOfDatastorePair struct {
   129  	DatastorePair []DatastorePair `xml:"DatastorePair,omitempty" json:"_value"`
   130  }
   131  
   132  func init() {
   133  	types.Add("sms:ArrayOfDatastorePair", reflect.TypeOf((*ArrayOfDatastorePair)(nil)).Elem())
   134  }
   135  
   136  // A boxed array of `DeviceId`. To be used in `Any` placeholders.
   137  type ArrayOfDeviceId struct {
   138  	DeviceId []BaseDeviceId `xml:"DeviceId,omitempty,typeattr" json:"_value"`
   139  }
   140  
   141  func init() {
   142  	types.Add("sms:ArrayOfDeviceId", reflect.TypeOf((*ArrayOfDeviceId)(nil)).Elem())
   143  }
   144  
   145  // A boxed array of `FaultDomainProviderMapping`. To be used in `Any` placeholders.
   146  type ArrayOfFaultDomainProviderMapping struct {
   147  	FaultDomainProviderMapping []FaultDomainProviderMapping `xml:"FaultDomainProviderMapping,omitempty" json:"_value"`
   148  }
   149  
   150  func init() {
   151  	types.Add("sms:ArrayOfFaultDomainProviderMapping", reflect.TypeOf((*ArrayOfFaultDomainProviderMapping)(nil)).Elem())
   152  }
   153  
   154  // A boxed array of `GroupOperationResult`. To be used in `Any` placeholders.
   155  type ArrayOfGroupOperationResult struct {
   156  	GroupOperationResult []BaseGroupOperationResult `xml:"GroupOperationResult,omitempty,typeattr" json:"_value"`
   157  }
   158  
   159  func init() {
   160  	types.Add("sms:ArrayOfGroupOperationResult", reflect.TypeOf((*ArrayOfGroupOperationResult)(nil)).Elem())
   161  }
   162  
   163  // A boxed array of `NameValuePair`. To be used in `Any` placeholders.
   164  type ArrayOfNameValuePair struct {
   165  	NameValuePair []NameValuePair `xml:"NameValuePair,omitempty" json:"_value"`
   166  }
   167  
   168  func init() {
   169  	types.Add("sms:ArrayOfNameValuePair", reflect.TypeOf((*ArrayOfNameValuePair)(nil)).Elem())
   170  }
   171  
   172  // A boxed array of `PointInTimeReplicaInfo`. To be used in `Any` placeholders.
   173  type ArrayOfPointInTimeReplicaInfo struct {
   174  	PointInTimeReplicaInfo []PointInTimeReplicaInfo `xml:"PointInTimeReplicaInfo,omitempty" json:"_value"`
   175  }
   176  
   177  func init() {
   178  	types.Add("sms:ArrayOfPointInTimeReplicaInfo", reflect.TypeOf((*ArrayOfPointInTimeReplicaInfo)(nil)).Elem())
   179  }
   180  
   181  // A boxed array of `PolicyAssociation`. To be used in `Any` placeholders.
   182  type ArrayOfPolicyAssociation struct {
   183  	PolicyAssociation []PolicyAssociation `xml:"PolicyAssociation,omitempty" json:"_value"`
   184  }
   185  
   186  func init() {
   187  	types.Add("sms:ArrayOfPolicyAssociation", reflect.TypeOf((*ArrayOfPolicyAssociation)(nil)).Elem())
   188  }
   189  
   190  // A boxed array of `QueryReplicationPeerResult`. To be used in `Any` placeholders.
   191  type ArrayOfQueryReplicationPeerResult struct {
   192  	QueryReplicationPeerResult []QueryReplicationPeerResult `xml:"QueryReplicationPeerResult,omitempty" json:"_value"`
   193  }
   194  
   195  func init() {
   196  	types.Add("sms:ArrayOfQueryReplicationPeerResult", reflect.TypeOf((*ArrayOfQueryReplicationPeerResult)(nil)).Elem())
   197  }
   198  
   199  // A boxed array of `RecoveredDevice`. To be used in `Any` placeholders.
   200  type ArrayOfRecoveredDevice struct {
   201  	RecoveredDevice []RecoveredDevice `xml:"RecoveredDevice,omitempty" json:"_value"`
   202  }
   203  
   204  func init() {
   205  	types.Add("sms:ArrayOfRecoveredDevice", reflect.TypeOf((*ArrayOfRecoveredDevice)(nil)).Elem())
   206  }
   207  
   208  // A boxed array of `RecoveredDiskInfo`. To be used in `Any` placeholders.
   209  type ArrayOfRecoveredDiskInfo struct {
   210  	RecoveredDiskInfo []RecoveredDiskInfo `xml:"RecoveredDiskInfo,omitempty" json:"_value"`
   211  }
   212  
   213  func init() {
   214  	types.Add("sms:ArrayOfRecoveredDiskInfo", reflect.TypeOf((*ArrayOfRecoveredDiskInfo)(nil)).Elem())
   215  }
   216  
   217  // A boxed array of `RelatedStorageArray`. To be used in `Any` placeholders.
   218  type ArrayOfRelatedStorageArray struct {
   219  	RelatedStorageArray []RelatedStorageArray `xml:"RelatedStorageArray,omitempty" json:"_value"`
   220  }
   221  
   222  func init() {
   223  	types.Add("sms:ArrayOfRelatedStorageArray", reflect.TypeOf((*ArrayOfRelatedStorageArray)(nil)).Elem())
   224  }
   225  
   226  // A boxed array of `ReplicaIntervalQueryResult`. To be used in `Any` placeholders.
   227  type ArrayOfReplicaIntervalQueryResult struct {
   228  	ReplicaIntervalQueryResult []ReplicaIntervalQueryResult `xml:"ReplicaIntervalQueryResult,omitempty" json:"_value"`
   229  }
   230  
   231  func init() {
   232  	types.Add("sms:ArrayOfReplicaIntervalQueryResult", reflect.TypeOf((*ArrayOfReplicaIntervalQueryResult)(nil)).Elem())
   233  }
   234  
   235  // A boxed array of `ReplicationGroupData`. To be used in `Any` placeholders.
   236  type ArrayOfReplicationGroupData struct {
   237  	ReplicationGroupData []ReplicationGroupData `xml:"ReplicationGroupData,omitempty" json:"_value"`
   238  }
   239  
   240  func init() {
   241  	types.Add("sms:ArrayOfReplicationGroupData", reflect.TypeOf((*ArrayOfReplicationGroupData)(nil)).Elem())
   242  }
   243  
   244  // A boxed array of `ReplicationTargetInfo`. To be used in `Any` placeholders.
   245  type ArrayOfReplicationTargetInfo struct {
   246  	ReplicationTargetInfo []ReplicationTargetInfo `xml:"ReplicationTargetInfo,omitempty" json:"_value"`
   247  }
   248  
   249  func init() {
   250  	types.Add("sms:ArrayOfReplicationTargetInfo", reflect.TypeOf((*ArrayOfReplicationTargetInfo)(nil)).Elem())
   251  }
   252  
   253  // A boxed array of `SmsProviderInfo`. To be used in `Any` placeholders.
   254  type ArrayOfSmsProviderInfo struct {
   255  	SmsProviderInfo []BaseSmsProviderInfo `xml:"SmsProviderInfo,omitempty,typeattr" json:"_value"`
   256  }
   257  
   258  func init() {
   259  	types.Add("sms:ArrayOfSmsProviderInfo", reflect.TypeOf((*ArrayOfSmsProviderInfo)(nil)).Elem())
   260  }
   261  
   262  // A boxed array of `SourceGroupMemberInfo`. To be used in `Any` placeholders.
   263  type ArrayOfSourceGroupMemberInfo struct {
   264  	SourceGroupMemberInfo []SourceGroupMemberInfo `xml:"SourceGroupMemberInfo,omitempty" json:"_value"`
   265  }
   266  
   267  func init() {
   268  	types.Add("sms:ArrayOfSourceGroupMemberInfo", reflect.TypeOf((*ArrayOfSourceGroupMemberInfo)(nil)).Elem())
   269  }
   270  
   271  // A boxed array of `StorageAlarm`. To be used in `Any` placeholders.
   272  type ArrayOfStorageAlarm struct {
   273  	StorageAlarm []StorageAlarm `xml:"StorageAlarm,omitempty" json:"_value"`
   274  }
   275  
   276  func init() {
   277  	types.Add("sms:ArrayOfStorageAlarm", reflect.TypeOf((*ArrayOfStorageAlarm)(nil)).Elem())
   278  }
   279  
   280  // A boxed array of `StorageArray`. To be used in `Any` placeholders.
   281  type ArrayOfStorageArray struct {
   282  	StorageArray []StorageArray `xml:"StorageArray,omitempty" json:"_value"`
   283  }
   284  
   285  func init() {
   286  	types.Add("sms:ArrayOfStorageArray", reflect.TypeOf((*ArrayOfStorageArray)(nil)).Elem())
   287  }
   288  
   289  // A boxed array of `StorageContainer`. To be used in `Any` placeholders.
   290  type ArrayOfStorageContainer struct {
   291  	StorageContainer []StorageContainer `xml:"StorageContainer,omitempty" json:"_value"`
   292  }
   293  
   294  func init() {
   295  	types.Add("sms:ArrayOfStorageContainer", reflect.TypeOf((*ArrayOfStorageContainer)(nil)).Elem())
   296  }
   297  
   298  // A boxed array of `StorageFileSystem`. To be used in `Any` placeholders.
   299  type ArrayOfStorageFileSystem struct {
   300  	StorageFileSystem []StorageFileSystem `xml:"StorageFileSystem,omitempty" json:"_value"`
   301  }
   302  
   303  func init() {
   304  	types.Add("sms:ArrayOfStorageFileSystem", reflect.TypeOf((*ArrayOfStorageFileSystem)(nil)).Elem())
   305  }
   306  
   307  // A boxed array of `StorageFileSystemInfo`. To be used in `Any` placeholders.
   308  type ArrayOfStorageFileSystemInfo struct {
   309  	StorageFileSystemInfo []StorageFileSystemInfo `xml:"StorageFileSystemInfo,omitempty" json:"_value"`
   310  }
   311  
   312  func init() {
   313  	types.Add("sms:ArrayOfStorageFileSystemInfo", reflect.TypeOf((*ArrayOfStorageFileSystemInfo)(nil)).Elem())
   314  }
   315  
   316  // A boxed array of `StorageLun`. To be used in `Any` placeholders.
   317  type ArrayOfStorageLun struct {
   318  	StorageLun []StorageLun `xml:"StorageLun,omitempty" json:"_value"`
   319  }
   320  
   321  func init() {
   322  	types.Add("sms:ArrayOfStorageLun", reflect.TypeOf((*ArrayOfStorageLun)(nil)).Elem())
   323  }
   324  
   325  // A boxed array of `StoragePort`. To be used in `Any` placeholders.
   326  type ArrayOfStoragePort struct {
   327  	StoragePort []BaseStoragePort `xml:"StoragePort,omitempty,typeattr" json:"_value"`
   328  }
   329  
   330  func init() {
   331  	types.Add("sms:ArrayOfStoragePort", reflect.TypeOf((*ArrayOfStoragePort)(nil)).Elem())
   332  }
   333  
   334  // A boxed array of `StorageProcessor`. To be used in `Any` placeholders.
   335  type ArrayOfStorageProcessor struct {
   336  	StorageProcessor []StorageProcessor `xml:"StorageProcessor,omitempty" json:"_value"`
   337  }
   338  
   339  func init() {
   340  	types.Add("sms:ArrayOfStorageProcessor", reflect.TypeOf((*ArrayOfStorageProcessor)(nil)).Elem())
   341  }
   342  
   343  // A boxed array of `SupportedVendorModelMapping`. To be used in `Any` placeholders.
   344  type ArrayOfSupportedVendorModelMapping struct {
   345  	SupportedVendorModelMapping []SupportedVendorModelMapping `xml:"SupportedVendorModelMapping,omitempty" json:"_value"`
   346  }
   347  
   348  func init() {
   349  	types.Add("sms:ArrayOfSupportedVendorModelMapping", reflect.TypeOf((*ArrayOfSupportedVendorModelMapping)(nil)).Elem())
   350  }
   351  
   352  // A boxed array of `TargetDeviceId`. To be used in `Any` placeholders.
   353  type ArrayOfTargetDeviceId struct {
   354  	TargetDeviceId []TargetDeviceId `xml:"TargetDeviceId,omitempty" json:"_value"`
   355  }
   356  
   357  func init() {
   358  	types.Add("sms:ArrayOfTargetDeviceId", reflect.TypeOf((*ArrayOfTargetDeviceId)(nil)).Elem())
   359  }
   360  
   361  // A boxed array of `TargetGroupMemberInfo`. To be used in `Any` placeholders.
   362  type ArrayOfTargetGroupMemberInfo struct {
   363  	TargetGroupMemberInfo []BaseTargetGroupMemberInfo `xml:"TargetGroupMemberInfo,omitempty,typeattr" json:"_value"`
   364  }
   365  
   366  func init() {
   367  	types.Add("sms:ArrayOfTargetGroupMemberInfo", reflect.TypeOf((*ArrayOfTargetGroupMemberInfo)(nil)).Elem())
   368  }
   369  
   370  // This exception is thrown when an error occurs while
   371  // connecting to the vpxd service to validate the user
   372  // credentials
   373  //
   374  // This structure may be used only with operations rendered under `/sms`.
   375  type AuthConnectionFailed struct {
   376  	types.NoPermission
   377  }
   378  
   379  func init() {
   380  	types.Add("sms:AuthConnectionFailed", reflect.TypeOf((*AuthConnectionFailed)(nil)).Elem())
   381  }
   382  
   383  type AuthConnectionFailedFault AuthConnectionFailed
   384  
   385  func init() {
   386  	types.Add("sms:AuthConnectionFailedFault", reflect.TypeOf((*AuthConnectionFailedFault)(nil)).Elem())
   387  }
   388  
   389  // This data object represents SDRS related data associated with block device or file system.
   390  //
   391  // This structure may be used only with operations rendered under `/sms`.
   392  type BackingConfig struct {
   393  	types.DynamicData
   394  
   395  	// Identifier for the backing pool for thin provisioning
   396  	ThinProvisionBackingIdentifier string `xml:"thinProvisionBackingIdentifier,omitempty" json:"thinProvisionBackingIdentifier,omitempty"`
   397  	// Identifier for the backing pool for deduplication
   398  	DeduplicationBackingIdentifier string `xml:"deduplicationBackingIdentifier,omitempty" json:"deduplicationBackingIdentifier,omitempty"`
   399  	// Flag to indicate whether auto-tiering optimizations are active
   400  	AutoTieringEnabled *bool `xml:"autoTieringEnabled" json:"autoTieringEnabled,omitempty"`
   401  	// Aggregate indication of space savings efficiency in the shared
   402  	// deduplication pool.
   403  	//
   404  	// The value is between 0 and 100, higher values
   405  	// indicating better efficiency.
   406  	DeduplicationEfficiency int64 `xml:"deduplicationEfficiency,omitempty" json:"deduplicationEfficiency,omitempty"`
   407  	// Frequency in seconds at which interval auto-tiering optimizations
   408  	// are applied.
   409  	//
   410  	// A value of 0 indicates continuous optimization.
   411  	PerformanceOptimizationInterval int64 `xml:"performanceOptimizationInterval,omitempty" json:"performanceOptimizationInterval,omitempty"`
   412  }
   413  
   414  func init() {
   415  	types.Add("sms:BackingConfig", reflect.TypeOf((*BackingConfig)(nil)).Elem())
   416  }
   417  
   418  // This data object represents the backing storage pool information of block device or file system.
   419  //
   420  // This structure may be used only with operations rendered under `/sms`.
   421  type BackingStoragePool struct {
   422  	types.DynamicData
   423  
   424  	// Unique identifier
   425  	Uuid string `xml:"uuid" json:"uuid"`
   426  	Type string `xml:"type" json:"type"`
   427  	// Upper bound of the available capacity in the backing storage pool.
   428  	CapacityInMB int64 `xml:"capacityInMB" json:"capacityInMB"`
   429  	// Aggregate used space in the backing storage pool.
   430  	UsedSpaceInMB int64 `xml:"usedSpaceInMB" json:"usedSpaceInMB"`
   431  }
   432  
   433  func init() {
   434  	types.Add("sms:BackingStoragePool", reflect.TypeOf((*BackingStoragePool)(nil)).Elem())
   435  }
   436  
   437  // This exception is thrown if there is a problem with calls to the
   438  // CertificateAuthority.
   439  //
   440  // This structure may be used only with operations rendered under `/sms`.
   441  type CertificateAuthorityFault struct {
   442  	ProviderRegistrationFault
   443  
   444  	// Fault code returned by certificate authority.
   445  	FaultCode int32 `xml:"faultCode" json:"faultCode"`
   446  }
   447  
   448  func init() {
   449  	types.Add("sms:CertificateAuthorityFault", reflect.TypeOf((*CertificateAuthorityFault)(nil)).Elem())
   450  }
   451  
   452  type CertificateAuthorityFaultFault CertificateAuthorityFault
   453  
   454  func init() {
   455  	types.Add("sms:CertificateAuthorityFaultFault", reflect.TypeOf((*CertificateAuthorityFaultFault)(nil)).Elem())
   456  }
   457  
   458  // This exception is thrown if `sms.Provider.VasaProviderInfo#retainVasaProviderCertificate`
   459  // is true and the provider uses a certificate issued by a Certificate Authority,
   460  // but the root certificate of the Certificate Authority is not imported to VECS truststore
   461  // before attempting the provider registration.
   462  //
   463  // This structure may be used only with operations rendered under `/sms`.
   464  type CertificateNotImported struct {
   465  	ProviderRegistrationFault
   466  }
   467  
   468  func init() {
   469  	types.Add("sms:CertificateNotImported", reflect.TypeOf((*CertificateNotImported)(nil)).Elem())
   470  }
   471  
   472  type CertificateNotImportedFault CertificateNotImported
   473  
   474  func init() {
   475  	types.Add("sms:CertificateNotImportedFault", reflect.TypeOf((*CertificateNotImportedFault)(nil)).Elem())
   476  }
   477  
   478  // This exception is thrown if the certificate provided by the
   479  // provider is not trusted.
   480  //
   481  // This structure may be used only with operations rendered under `/sms`.
   482  type CertificateNotTrusted struct {
   483  	ProviderRegistrationFault
   484  
   485  	// Certificate
   486  	Certificate string `xml:"certificate" json:"certificate"`
   487  }
   488  
   489  func init() {
   490  	types.Add("sms:CertificateNotTrusted", reflect.TypeOf((*CertificateNotTrusted)(nil)).Elem())
   491  }
   492  
   493  // An CertificateNotTrusted fault is thrown when an Agency's configuration
   494  // contains OVF package URL or VIB URL for that vSphere ESX Agent Manager is not
   495  // able to make successful SSL trust verification of the server's certificate.
   496  //
   497  // Reasons for this might be that the certificate provided via the API
   498  // `Agent.ConfigInfo.ovfSslTrust` and `Agent.ConfigInfo.vibSslTrust`
   499  // or via the script /usr/lib/vmware-eam/bin/eam-utility.py
   500  //   - is invalid.
   501  //   - does not match the server's certificate.
   502  //
   503  // If there is no provided certificate, the fault is thrown when the server's
   504  // certificate is not trusted by the system or is invalid - @see
   505  // `Agent.ConfigInfo.ovfSslTrust` and
   506  // `Agent.ConfigInfo.vibSslTrust`.
   507  // To enable Agency creation 1) provide a valid certificate used by the
   508  // server hosting the `Agent.ConfigInfo.ovfPackageUrl` or
   509  // `Agent.ConfigInfo#vibUrl` or 2) ensure the server's certificate is
   510  // signed by a CA trusted by the system. Then retry the operation, vSphere
   511  // ESX Agent Manager will retry the SSL trust verification and proceed with
   512  // reaching the desired state.
   513  //
   514  // This structure may be used only with operations rendered under `/eam`.
   515  //
   516  // `**Since:**` vEAM API 8.2
   517  type CertificateNotTrustedFault CertificateNotTrusted
   518  
   519  func init() {
   520  	types.Add("sms:CertificateNotTrustedFault", reflect.TypeOf((*CertificateNotTrustedFault)(nil)).Elem())
   521  }
   522  
   523  // This exception is thrown if SMS failed to
   524  // refresh a CA signed certificate for the provider (or)
   525  // push the latest CA root certificates and CRLs to the provider.
   526  //
   527  // This structure may be used only with operations rendered under `/sms`.
   528  type CertificateRefreshFailed struct {
   529  	types.MethodFault
   530  
   531  	ProviderId []string `xml:"providerId,omitempty" json:"providerId,omitempty"`
   532  }
   533  
   534  func init() {
   535  	types.Add("sms:CertificateRefreshFailed", reflect.TypeOf((*CertificateRefreshFailed)(nil)).Elem())
   536  }
   537  
   538  type CertificateRefreshFailedFault CertificateRefreshFailed
   539  
   540  func init() {
   541  	types.Add("sms:CertificateRefreshFailedFault", reflect.TypeOf((*CertificateRefreshFailedFault)(nil)).Elem())
   542  }
   543  
   544  // This exception is thrown if SMS failed to revoke CA signed certificate of the provider.
   545  //
   546  // This structure may be used only with operations rendered under `/sms`.
   547  type CertificateRevocationFailed struct {
   548  	types.MethodFault
   549  }
   550  
   551  func init() {
   552  	types.Add("sms:CertificateRevocationFailed", reflect.TypeOf((*CertificateRevocationFailed)(nil)).Elem())
   553  }
   554  
   555  type CertificateRevocationFailedFault CertificateRevocationFailed
   556  
   557  func init() {
   558  	types.Add("sms:CertificateRevocationFailedFault", reflect.TypeOf((*CertificateRevocationFailedFault)(nil)).Elem())
   559  }
   560  
   561  // This data object represents the result of queryDatastoreBackingPoolMapping API.
   562  //
   563  // More than one datastore can map to the same set of BackingStoragePool.
   564  //
   565  // This structure may be used only with operations rendered under `/sms`.
   566  type DatastoreBackingPoolMapping struct {
   567  	types.DynamicData
   568  
   569  	Datastore          []types.ManagedObjectReference `xml:"datastore" json:"datastore"`
   570  	BackingStoragePool []BackingStoragePool           `xml:"backingStoragePool,omitempty" json:"backingStoragePool,omitempty"`
   571  }
   572  
   573  func init() {
   574  	types.Add("sms:DatastoreBackingPoolMapping", reflect.TypeOf((*DatastoreBackingPoolMapping)(nil)).Elem())
   575  }
   576  
   577  // Deprecated as of SMS API 5.0.
   578  //
   579  // Datastore pair that is returned as a result of queryDrsMigrationCapabilityForPerformanceEx API.
   580  //
   581  // This structure may be used only with operations rendered under `/sms`.
   582  type DatastorePair struct {
   583  	types.DynamicData
   584  
   585  	Datastore1 types.ManagedObjectReference `xml:"datastore1" json:"datastore1"`
   586  	Datastore2 types.ManagedObjectReference `xml:"datastore2" json:"datastore2"`
   587  }
   588  
   589  func init() {
   590  	types.Add("sms:DatastorePair", reflect.TypeOf((*DatastorePair)(nil)).Elem())
   591  }
   592  
   593  // Base class that represents a replicated device.
   594  //
   595  // This structure may be used only with operations rendered under `/sms`.
   596  type DeviceId struct {
   597  	types.DynamicData
   598  }
   599  
   600  func init() {
   601  	types.Add("sms:DeviceId", reflect.TypeOf((*DeviceId)(nil)).Elem())
   602  }
   603  
   604  // Deprecated as of SMS API 5.0.
   605  //
   606  // This data object represents the result of queryDrsMigrationCapabilityForPerformanceEx API.
   607  //
   608  // This structure may be used only with operations rendered under `/sms`.
   609  type DrsMigrationCapabilityResult struct {
   610  	types.DynamicData
   611  
   612  	RecommendedDatastorePair    []DatastorePair `xml:"recommendedDatastorePair,omitempty" json:"recommendedDatastorePair,omitempty"`
   613  	NonRecommendedDatastorePair []DatastorePair `xml:"nonRecommendedDatastorePair,omitempty" json:"nonRecommendedDatastorePair,omitempty"`
   614  }
   615  
   616  func init() {
   617  	types.Add("sms:DrsMigrationCapabilityResult", reflect.TypeOf((*DrsMigrationCapabilityResult)(nil)).Elem())
   618  }
   619  
   620  // This exception indicates there are duplicate entries in the input argument.
   621  //
   622  // This structure may be used only with operations rendered under `/sms`.
   623  type DuplicateEntry struct {
   624  	types.MethodFault
   625  }
   626  
   627  func init() {
   628  	types.Add("sms:DuplicateEntry", reflect.TypeOf((*DuplicateEntry)(nil)).Elem())
   629  }
   630  
   631  type DuplicateEntryFault DuplicateEntry
   632  
   633  func init() {
   634  	types.Add("sms:DuplicateEntryFault", reflect.TypeOf((*DuplicateEntryFault)(nil)).Elem())
   635  }
   636  
   637  // Deprecated as of SMS API 4.0.
   638  //
   639  // Unique identifier of a given entity with the storage
   640  // management service.
   641  //
   642  // It is similar to the VirtualCenter
   643  // ManagedObjectReference but also identifies certain
   644  // non-managed objects.
   645  //
   646  // This structure may be used only with operations rendered under `/sms`.
   647  type EntityReference struct {
   648  	types.DynamicData
   649  
   650  	// Unique identifier for the entity of a given type in the
   651  	// system.
   652  	//
   653  	// A VirtualCenter managed object ID can be supplied
   654  	// here, in which case the type may be unset. Otherwise, the
   655  	// type must be set.
   656  	Id string `xml:"id" json:"id"`
   657  	// Type of the entity.
   658  	Type EntityReferenceEntityType `xml:"type,omitempty" json:"type,omitempty"`
   659  }
   660  
   661  func init() {
   662  	types.Add("sms:EntityReference", reflect.TypeOf((*EntityReference)(nil)).Elem())
   663  }
   664  
   665  // Input to the failover or testFailover methods.
   666  //
   667  // This structure may be used only with operations rendered under `/sms`.
   668  type FailoverParam struct {
   669  	types.DynamicData
   670  
   671  	// Whether the failover is a planned failover or not.
   672  	//
   673  	// Note that testFailover
   674  	// can also be executed in an unplanned mode. When this flag is
   675  	// set to false, the recovery VASA provider must not try to connect
   676  	// to the primary VASA provider during the failover.
   677  	IsPlanned bool `xml:"isPlanned" json:"isPlanned"`
   678  	// Do not execute the (test) failover but check if the configuration
   679  	// is correct to execute the (test) failover.
   680  	//
   681  	// If set to <code>true</code>, the (test)failover result is an array where
   682  	// each element is either `GroupOperationResult` or `GroupErrorResult`.
   683  	//
   684  	// If set to <code>false</code>, the (test)failover result is an array where
   685  	// each element is either `FailoverSuccessResult` or `GroupErrorResult`.
   686  	CheckOnly bool `xml:"checkOnly" json:"checkOnly"`
   687  	// The replication groups to failover.
   688  	//
   689  	// It is OK for the VASA
   690  	// provider to successfully failover only some groups. The
   691  	// groups that did not complete will be retried.
   692  	ReplicationGroupsToFailover []ReplicationGroupData `xml:"replicationGroupsToFailover,omitempty" json:"replicationGroupsToFailover,omitempty"`
   693  	// Storage policies for the devices after (test)failover.
   694  	//
   695  	// Failover should be done even if policies cannot be associated.
   696  	// Test failover, however, should fail if policies cannot be associated.
   697  	//
   698  	// If policies cannot be associated, VASA provider can notify the client by
   699  	// doing either or both of these:
   700  	// 1\. Set the warning in the result for a replication group to indicate
   701  	// such a failure to set the policy.
   702  	// 2\. Raise a compliance alarm after the failover is done.
   703  	//
   704  	// If not specified, the default policies are used. Callers may reassign
   705  	// policy later.
   706  	PolicyAssociations []PolicyAssociation `xml:"policyAssociations,omitempty" json:"policyAssociations,omitempty"`
   707  }
   708  
   709  func init() {
   710  	types.Add("sms:FailoverParam", reflect.TypeOf((*FailoverParam)(nil)).Elem())
   711  }
   712  
   713  // The parameters of `VasaProvider.FailoverReplicationGroup_Task`.
   714  type FailoverReplicationGroupRequestType struct {
   715  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
   716  	// Settings for the failover.
   717  	FailoverParam BaseFailoverParam `xml:"failoverParam,typeattr" json:"failoverParam"`
   718  }
   719  
   720  func init() {
   721  	types.Add("sms:FailoverReplicationGroupRequestType", reflect.TypeOf((*FailoverReplicationGroupRequestType)(nil)).Elem())
   722  }
   723  
   724  type FailoverReplicationGroup_Task FailoverReplicationGroupRequestType
   725  
   726  func init() {
   727  	types.Add("sms:FailoverReplicationGroup_Task", reflect.TypeOf((*FailoverReplicationGroup_Task)(nil)).Elem())
   728  }
   729  
   730  type FailoverReplicationGroup_TaskResponse struct {
   731  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
   732  }
   733  
   734  // Results of a successful failover operation.
   735  //
   736  // The target fault domain Id, and the device group id are inherited.
   737  //
   738  // This structure may be used only with operations rendered under `/sms`.
   739  type FailoverSuccessResult struct {
   740  	GroupOperationResult
   741  
   742  	// Some replicators may automatically reverse replication on failover.
   743  	//
   744  	// Such
   745  	// replicators must move the replication status to
   746  	// `SOURCE`
   747  	// In other cases, it can remain as `FAILEDOVER`.
   748  	NewState string `xml:"newState" json:"newState"`
   749  	// Id of the Point in Time snapshot used during failover.
   750  	//
   751  	// If not present,
   752  	// latest PIT was used.
   753  	PitId *PointInTimeReplicaId `xml:"pitId,omitempty" json:"pitId,omitempty"`
   754  	// Optional id of the Point in Time snapshot that was automatically created before
   755  	// failing over.
   756  	//
   757  	// This is recommended so users can revert back to this
   758  	// snapshot to avoid data loss. This can be removed after the reverse
   759  	// replication call succeeds.
   760  	PitIdBeforeFailover *PointInTimeReplicaId `xml:"pitIdBeforeFailover,omitempty" json:"pitIdBeforeFailover,omitempty"`
   761  	// Recovered Devices.
   762  	//
   763  	// This is optional because in some corner cases the
   764  	// replication groups on the target site may not have any virtual volumes.
   765  	RecoveredDeviceInfo []RecoveredDevice `xml:"recoveredDeviceInfo,omitempty" json:"recoveredDeviceInfo,omitempty"`
   766  	// Time stamp of recovery.
   767  	TimeStamp *time.Time `xml:"timeStamp" json:"timeStamp,omitempty"`
   768  }
   769  
   770  func init() {
   771  	types.Add("sms:FailoverSuccessResult", reflect.TypeOf((*FailoverSuccessResult)(nil)).Elem())
   772  }
   773  
   774  // This spec contains information needed for `SmsStorageManager.QueryFaultDomain`
   775  // API to filter the result.
   776  //
   777  // This structure may be used only with operations rendered under `/sms`.
   778  type FaultDomainFilter struct {
   779  	types.DynamicData
   780  
   781  	// If specified, query for this specific provider only; else query for all
   782  	// providers.
   783  	ProviderId string `xml:"providerId,omitempty" json:"providerId,omitempty"`
   784  }
   785  
   786  func init() {
   787  	types.Add("sms:FaultDomainFilter", reflect.TypeOf((*FaultDomainFilter)(nil)).Elem())
   788  }
   789  
   790  // Information about a Fault Domain.
   791  //
   792  // This structure may be used only with operations rendered under `/sms`.
   793  type FaultDomainInfo struct {
   794  	types.FaultDomainId
   795  
   796  	// Name of the fault domain, if not specified, the id will be used in place
   797  	// of the name.
   798  	//
   799  	// Name need not be unique.
   800  	Name string `xml:"name,omitempty" json:"name,omitempty"`
   801  	// Description - could be a localized string.
   802  	Description string `xml:"description,omitempty" json:"description,omitempty"`
   803  	// Identifier of the Storage Array that this Fault Domain belongs to.
   804  	//
   805  	// A Fault
   806  	// Domain and all its children should report same `FaultDomainInfo.storageArrayId`. It
   807  	// can be left unspecified. If not specified, vSphere will not support High
   808  	// Availability feature for this Fault Domain. When specified, vSphere will
   809  	// treat the the currently active VASA provider for `StorageArray` as
   810  	// the active VASA provider for this Fault Domain and its children.
   811  	// Changing High Availability support choice for a Fault Domain
   812  	// intermittently, by sometimes specifying the storageArrayId and sometimes
   813  	// not, will cause unexpected result and might cause VP to be in 'syncError'
   814  	// state in vSphere.
   815  	StorageArrayId string `xml:"storageArrayId,omitempty" json:"storageArrayId,omitempty"`
   816  	// List of children, the entries in the array should always be
   817  	// `FaultDomainId` and not `FaultDomainInfo`.
   818  	//
   819  	// The 2016 vSphere release will not support nested Fault Domains. The field
   820  	// FaultDomainInfo#children is ignored by vSphere 2016 release.
   821  	Children []types.FaultDomainId `xml:"children,omitempty" json:"children,omitempty"`
   822  	// VASA provider that is actively managing this fault domain
   823  	//
   824  	// Refers instance of `SmsProvider`.
   825  	Provider *types.ManagedObjectReference `xml:"provider,omitempty" json:"provider,omitempty"`
   826  }
   827  
   828  func init() {
   829  	types.Add("sms:FaultDomainInfo", reflect.TypeOf((*FaultDomainInfo)(nil)).Elem())
   830  }
   831  
   832  // This mapping will be set in InactiveProvider fault to notify clients
   833  // the current active provider for the specified fault domains.
   834  //
   835  // This structure may be used only with operations rendered under `/sms`.
   836  type FaultDomainProviderMapping struct {
   837  	types.DynamicData
   838  
   839  	// Active provider managing the fault domains
   840  	//
   841  	// Refers instance of `SmsProvider`.
   842  	ActiveProvider types.ManagedObjectReference `xml:"activeProvider" json:"activeProvider"`
   843  	// Fault domains being managed by the provider
   844  	FaultDomainId []types.FaultDomainId `xml:"faultDomainId,omitempty" json:"faultDomainId,omitempty"`
   845  }
   846  
   847  func init() {
   848  	types.Add("sms:FaultDomainProviderMapping", reflect.TypeOf((*FaultDomainProviderMapping)(nil)).Elem())
   849  }
   850  
   851  // This data object represents the FC storage port.
   852  //
   853  // This structure may be used only with operations rendered under `/sms`.
   854  type FcStoragePort struct {
   855  	StoragePort
   856  
   857  	// World Wide Name for the Port
   858  	PortWwn string `xml:"portWwn" json:"portWwn"`
   859  	// World Wide Name for the Node
   860  	NodeWwn string `xml:"nodeWwn" json:"nodeWwn"`
   861  }
   862  
   863  func init() {
   864  	types.Add("sms:FcStoragePort", reflect.TypeOf((*FcStoragePort)(nil)).Elem())
   865  }
   866  
   867  // This data object represents the FCoE storage port.
   868  //
   869  // This structure may be used only with operations rendered under `/sms`.
   870  type FcoeStoragePort struct {
   871  	StoragePort
   872  
   873  	// World Wide Name for the Port
   874  	PortWwn string `xml:"portWwn" json:"portWwn"`
   875  	// World Wide Name for the Node
   876  	NodeWwn string `xml:"nodeWwn" json:"nodeWwn"`
   877  }
   878  
   879  func init() {
   880  	types.Add("sms:FcoeStoragePort", reflect.TypeOf((*FcoeStoragePort)(nil)).Elem())
   881  }
   882  
   883  // Error result.
   884  //
   885  // This structure may be used only with operations rendered under `/sms`.
   886  type GroupErrorResult struct {
   887  	GroupOperationResult
   888  
   889  	// Error array, must contain at least one entry.
   890  	Error []types.LocalizedMethodFault `xml:"error" json:"error"`
   891  }
   892  
   893  func init() {
   894  	types.Add("sms:GroupErrorResult", reflect.TypeOf((*GroupErrorResult)(nil)).Elem())
   895  }
   896  
   897  // Replication group information.
   898  //
   899  // May be either a `SourceGroupInfo` or
   900  // `TargetGroupInfo`.
   901  //
   902  // This structure may be used only with operations rendered under `/sms`.
   903  type GroupInfo struct {
   904  	types.DynamicData
   905  
   906  	// Identifier of the group + fault domain id.
   907  	GroupId types.ReplicationGroupId `xml:"groupId" json:"groupId"`
   908  }
   909  
   910  func init() {
   911  	types.Add("sms:GroupInfo", reflect.TypeOf((*GroupInfo)(nil)).Elem())
   912  }
   913  
   914  // The base class for any operation on a replication group.
   915  //
   916  // Usually, there is an
   917  // operation specific SuccessResult
   918  //
   919  // This structure may be used only with operations rendered under `/sms`.
   920  type GroupOperationResult struct {
   921  	types.DynamicData
   922  
   923  	// Replication group Id.
   924  	GroupId types.ReplicationGroupId     `xml:"groupId" json:"groupId"`
   925  	Warning []types.LocalizedMethodFault `xml:"warning,omitempty" json:"warning,omitempty"`
   926  }
   927  
   928  func init() {
   929  	types.Add("sms:GroupOperationResult", reflect.TypeOf((*GroupOperationResult)(nil)).Elem())
   930  }
   931  
   932  // Thrown if the VASA Provider on which the call is made is currently not
   933  // active.
   934  //
   935  // If the client maintains a cache of the topology of fault domains
   936  // and replication groups, it's expected to update the cache based on the
   937  // mapping information set in this fault.
   938  //
   939  // This structure may be used only with operations rendered under `/sms`.
   940  type InactiveProvider struct {
   941  	types.MethodFault
   942  
   943  	// Mapping between VASA provider and the fault domains
   944  	Mapping []FaultDomainProviderMapping `xml:"mapping,omitempty" json:"mapping,omitempty"`
   945  }
   946  
   947  func init() {
   948  	types.Add("sms:InactiveProvider", reflect.TypeOf((*InactiveProvider)(nil)).Elem())
   949  }
   950  
   951  type InactiveProviderFault InactiveProvider
   952  
   953  func init() {
   954  	types.Add("sms:InactiveProviderFault", reflect.TypeOf((*InactiveProviderFault)(nil)).Elem())
   955  }
   956  
   957  // This fault is thrown if failed to register provider due to incorrect credentials.
   958  //
   959  // This structure may be used only with operations rendered under `/sms`.
   960  type IncorrectUsernamePassword struct {
   961  	ProviderRegistrationFault
   962  }
   963  
   964  func init() {
   965  	types.Add("sms:IncorrectUsernamePassword", reflect.TypeOf((*IncorrectUsernamePassword)(nil)).Elem())
   966  }
   967  
   968  type IncorrectUsernamePasswordFault IncorrectUsernamePassword
   969  
   970  func init() {
   971  	types.Add("sms:IncorrectUsernamePasswordFault", reflect.TypeOf((*IncorrectUsernamePasswordFault)(nil)).Elem())
   972  }
   973  
   974  // This exception is thrown if the provider certificate is empty, malformed,
   975  // expired, not yet valid, revoked or fails host name verification.
   976  //
   977  // This structure may be used only with operations rendered under `/sms`.
   978  type InvalidCertificate struct {
   979  	ProviderRegistrationFault
   980  
   981  	// Provider certificate
   982  	Certificate string `xml:"certificate" json:"certificate"`
   983  }
   984  
   985  func init() {
   986  	types.Add("sms:InvalidCertificate", reflect.TypeOf((*InvalidCertificate)(nil)).Elem())
   987  }
   988  
   989  type InvalidCertificateFault InvalidCertificate
   990  
   991  func init() {
   992  	types.Add("sms:InvalidCertificateFault", reflect.TypeOf((*InvalidCertificateFault)(nil)).Elem())
   993  }
   994  
   995  // Thrown if the function is called at the wrong end of the replication (i.e.
   996  //
   997  // the failing function should be tried at the opposite end of replication).
   998  //
   999  // This structure may be used only with operations rendered under `/sms`.
  1000  type InvalidFunctionTarget struct {
  1001  	SmsReplicationFault
  1002  }
  1003  
  1004  func init() {
  1005  	types.Add("sms:InvalidFunctionTarget", reflect.TypeOf((*InvalidFunctionTarget)(nil)).Elem())
  1006  }
  1007  
  1008  type InvalidFunctionTargetFault InvalidFunctionTarget
  1009  
  1010  func init() {
  1011  	types.Add("sms:InvalidFunctionTargetFault", reflect.TypeOf((*InvalidFunctionTargetFault)(nil)).Elem())
  1012  }
  1013  
  1014  // This exception is thrown if the specified storage profile is invalid.
  1015  //
  1016  // This structure may be used only with operations rendered under `/sms`.
  1017  type InvalidProfile struct {
  1018  	types.MethodFault
  1019  }
  1020  
  1021  func init() {
  1022  	types.Add("sms:InvalidProfile", reflect.TypeOf((*InvalidProfile)(nil)).Elem())
  1023  }
  1024  
  1025  type InvalidProfileFault InvalidProfile
  1026  
  1027  func init() {
  1028  	types.Add("sms:InvalidProfileFault", reflect.TypeOf((*InvalidProfileFault)(nil)).Elem())
  1029  }
  1030  
  1031  // Thrown if the replication group is not in the correct state.
  1032  //
  1033  // This structure may be used only with operations rendered under `/sms`.
  1034  type InvalidReplicationState struct {
  1035  	SmsReplicationFault
  1036  
  1037  	// States where the operation would have been successful.
  1038  	DesiredState []string `xml:"desiredState,omitempty" json:"desiredState,omitempty"`
  1039  	// Current state.
  1040  	CurrentState string `xml:"currentState" json:"currentState"`
  1041  }
  1042  
  1043  func init() {
  1044  	types.Add("sms:InvalidReplicationState", reflect.TypeOf((*InvalidReplicationState)(nil)).Elem())
  1045  }
  1046  
  1047  type InvalidReplicationStateFault InvalidReplicationState
  1048  
  1049  func init() {
  1050  	types.Add("sms:InvalidReplicationStateFault", reflect.TypeOf((*InvalidReplicationStateFault)(nil)).Elem())
  1051  }
  1052  
  1053  // This exception is thrown if a specified session is invalid.
  1054  //
  1055  // This can occur if the VirtualCenter session referred to by
  1056  // the cookie has timed out or has been closed.
  1057  //
  1058  // This structure may be used only with operations rendered under `/sms`.
  1059  type InvalidSession struct {
  1060  	types.NoPermission
  1061  
  1062  	// VirtualCenter session cookie that is invalid.
  1063  	SessionCookie string `xml:"sessionCookie" json:"sessionCookie"`
  1064  }
  1065  
  1066  func init() {
  1067  	types.Add("sms:InvalidSession", reflect.TypeOf((*InvalidSession)(nil)).Elem())
  1068  }
  1069  
  1070  type InvalidSessionFault InvalidSession
  1071  
  1072  func init() {
  1073  	types.Add("sms:InvalidSessionFault", reflect.TypeOf((*InvalidSessionFault)(nil)).Elem())
  1074  }
  1075  
  1076  // This exception is thrown if `VasaProviderSpec.url` is malformed.
  1077  //
  1078  // This structure may be used only with operations rendered under `/sms`.
  1079  type InvalidUrl struct {
  1080  	ProviderRegistrationFault
  1081  
  1082  	// Provider `VasaProviderSpec.url`
  1083  	Url string `xml:"url" json:"url"`
  1084  }
  1085  
  1086  func init() {
  1087  	types.Add("sms:InvalidUrl", reflect.TypeOf((*InvalidUrl)(nil)).Elem())
  1088  }
  1089  
  1090  type InvalidUrlFault InvalidUrl
  1091  
  1092  func init() {
  1093  	types.Add("sms:InvalidUrlFault", reflect.TypeOf((*InvalidUrlFault)(nil)).Elem())
  1094  }
  1095  
  1096  // This data object represents the iSCSI storage port.
  1097  //
  1098  // This structure may be used only with operations rendered under `/sms`.
  1099  type IscsiStoragePort struct {
  1100  	StoragePort
  1101  
  1102  	// IQN or EQI identifier
  1103  	Identifier string `xml:"identifier" json:"identifier"`
  1104  }
  1105  
  1106  func init() {
  1107  	types.Add("sms:IscsiStoragePort", reflect.TypeOf((*IscsiStoragePort)(nil)).Elem())
  1108  }
  1109  
  1110  // This data object represents the lun, HBA association
  1111  // for synchronous replication.
  1112  //
  1113  // This structure may be used only with operations rendered under `/sms`.
  1114  type LunHbaAssociation struct {
  1115  	types.DynamicData
  1116  
  1117  	CanonicalName string                     `xml:"canonicalName" json:"canonicalName"`
  1118  	Hba           []types.HostHostBusAdapter `xml:"hba" json:"hba"`
  1119  }
  1120  
  1121  func init() {
  1122  	types.Add("sms:LunHbaAssociation", reflect.TypeOf((*LunHbaAssociation)(nil)).Elem())
  1123  }
  1124  
  1125  // This exception is thrown if more than one sort spec is
  1126  // specified in a list query.
  1127  //
  1128  // This structure may be used only with operations rendered under `/sms`.
  1129  type MultipleSortSpecsNotSupported struct {
  1130  	types.InvalidArgument
  1131  }
  1132  
  1133  func init() {
  1134  	types.Add("sms:MultipleSortSpecsNotSupported", reflect.TypeOf((*MultipleSortSpecsNotSupported)(nil)).Elem())
  1135  }
  1136  
  1137  type MultipleSortSpecsNotSupportedFault MultipleSortSpecsNotSupported
  1138  
  1139  func init() {
  1140  	types.Add("sms:MultipleSortSpecsNotSupportedFault", reflect.TypeOf((*MultipleSortSpecsNotSupportedFault)(nil)).Elem())
  1141  }
  1142  
  1143  // This data object represents a name value pair.
  1144  //
  1145  // This structure may be used only with operations rendered under `/sms`.
  1146  type NameValuePair struct {
  1147  	types.DynamicData
  1148  
  1149  	// Name of the paramter
  1150  	ParameterName string `xml:"parameterName" json:"parameterName"`
  1151  	// Value of the parameter
  1152  	ParameterValue string `xml:"parameterValue" json:"parameterValue"`
  1153  }
  1154  
  1155  func init() {
  1156  	types.Add("sms:NameValuePair", reflect.TypeOf((*NameValuePair)(nil)).Elem())
  1157  }
  1158  
  1159  // This fault is thrown when backings (@link
  1160  // sms.storage.StorageLun/ @link sms.storage.StorageFileSystem)
  1161  // of the specified datastores refer to different
  1162  // VASA providers.
  1163  //
  1164  // This structure may be used only with operations rendered under `/sms`.
  1165  type NoCommonProviderForAllBackings struct {
  1166  	QueryExecutionFault
  1167  }
  1168  
  1169  func init() {
  1170  	types.Add("sms:NoCommonProviderForAllBackings", reflect.TypeOf((*NoCommonProviderForAllBackings)(nil)).Elem())
  1171  }
  1172  
  1173  type NoCommonProviderForAllBackingsFault NoCommonProviderForAllBackings
  1174  
  1175  func init() {
  1176  	types.Add("sms:NoCommonProviderForAllBackingsFault", reflect.TypeOf((*NoCommonProviderForAllBackingsFault)(nil)).Elem())
  1177  }
  1178  
  1179  // This exception is set if the replication target is not yet available.
  1180  //
  1181  // This structure may be used only with operations rendered under `/sms`.
  1182  type NoReplicationTarget struct {
  1183  	SmsReplicationFault
  1184  }
  1185  
  1186  func init() {
  1187  	types.Add("sms:NoReplicationTarget", reflect.TypeOf((*NoReplicationTarget)(nil)).Elem())
  1188  }
  1189  
  1190  type NoReplicationTargetFault NoReplicationTarget
  1191  
  1192  func init() {
  1193  	types.Add("sms:NoReplicationTargetFault", reflect.TypeOf((*NoReplicationTargetFault)(nil)).Elem())
  1194  }
  1195  
  1196  // This exception is thrown when there is no valid replica
  1197  // to be used in recovery.
  1198  //
  1199  // This may happen when a Virtual Volume
  1200  // is created on the source domain, but the replica is yet to
  1201  // be copied to the target.
  1202  //
  1203  // This structure may be used only with operations rendered under `/sms`.
  1204  type NoValidReplica struct {
  1205  	SmsReplicationFault
  1206  
  1207  	// Identifier of the device which does not have a valid
  1208  	// replica.
  1209  	//
  1210  	// This is the identifier on the target site.
  1211  	// This may not be set if the ReplicationGroup does not
  1212  	// have even a single valid replica.
  1213  	DeviceId BaseDeviceId `xml:"deviceId,omitempty,typeattr" json:"deviceId,omitempty"`
  1214  }
  1215  
  1216  func init() {
  1217  	types.Add("sms:NoValidReplica", reflect.TypeOf((*NoValidReplica)(nil)).Elem())
  1218  }
  1219  
  1220  type NoValidReplicaFault NoValidReplica
  1221  
  1222  func init() {
  1223  	types.Add("sms:NoValidReplicaFault", reflect.TypeOf((*NoValidReplicaFault)(nil)).Elem())
  1224  }
  1225  
  1226  // This exception is thrown if the VASA Provider on which the call is made
  1227  // does not support this operation.
  1228  //
  1229  // This structure may be used only with operations rendered under `/sms`.
  1230  type NotSupportedByProvider struct {
  1231  	types.MethodFault
  1232  }
  1233  
  1234  func init() {
  1235  	types.Add("sms:NotSupportedByProvider", reflect.TypeOf((*NotSupportedByProvider)(nil)).Elem())
  1236  }
  1237  
  1238  type NotSupportedByProviderFault NotSupportedByProvider
  1239  
  1240  func init() {
  1241  	types.Add("sms:NotSupportedByProviderFault", reflect.TypeOf((*NotSupportedByProviderFault)(nil)).Elem())
  1242  }
  1243  
  1244  // This exception is set if the replication peer is not reachable.
  1245  //
  1246  // For prepareFailover, it is the target that is not reachable.
  1247  // For other functions, it is the source that is not reachable.
  1248  //
  1249  // This structure may be used only with operations rendered under `/sms`.
  1250  type PeerNotReachable struct {
  1251  	SmsReplicationFault
  1252  }
  1253  
  1254  func init() {
  1255  	types.Add("sms:PeerNotReachable", reflect.TypeOf((*PeerNotReachable)(nil)).Elem())
  1256  }
  1257  
  1258  type PeerNotReachableFault PeerNotReachable
  1259  
  1260  func init() {
  1261  	types.Add("sms:PeerNotReachableFault", reflect.TypeOf((*PeerNotReachableFault)(nil)).Elem())
  1262  }
  1263  
  1264  // Identity of the Point in Time Replica object.
  1265  //
  1266  // This structure may be used only with operations rendered under `/sms`.
  1267  type PointInTimeReplicaId struct {
  1268  	types.DynamicData
  1269  
  1270  	// ID of the Point In Time replica.
  1271  	Id string `xml:"id" json:"id"`
  1272  }
  1273  
  1274  func init() {
  1275  	types.Add("sms:PointInTimeReplicaId", reflect.TypeOf((*PointInTimeReplicaId)(nil)).Elem())
  1276  }
  1277  
  1278  type PointInTimeReplicaInfo struct {
  1279  	types.DynamicData
  1280  
  1281  	// Id of the PIT replica.
  1282  	//
  1283  	// Note that this id is always used
  1284  	// in combination with the `ReplicationGroupId`, hence must be
  1285  	// unique to the `ReplicationGroupId`.
  1286  	Id PointInTimeReplicaId `xml:"id" json:"id"`
  1287  	// Name of the PIT replica.
  1288  	//
  1289  	// This may be a localized string
  1290  	// in a language as chosen by the VASA provider.
  1291  	PitName string `xml:"pitName" json:"pitName"`
  1292  	// Time when the snapshot was taken.
  1293  	//
  1294  	// Time stamps are maintained by
  1295  	// the Replication provider, note that this carries time zone information
  1296  	// as well.
  1297  	TimeStamp time.Time `xml:"timeStamp" json:"timeStamp"`
  1298  	// VASA provider managed tags associated with the replica.
  1299  	Tags []string `xml:"tags,omitempty" json:"tags,omitempty"`
  1300  }
  1301  
  1302  func init() {
  1303  	types.Add("sms:PointInTimeReplicaInfo", reflect.TypeOf((*PointInTimeReplicaInfo)(nil)).Elem())
  1304  }
  1305  
  1306  // Describes the policy association object.
  1307  //
  1308  // This structure may be used only with operations rendered under `/sms`.
  1309  type PolicyAssociation struct {
  1310  	types.DynamicData
  1311  
  1312  	// The source device id.
  1313  	//
  1314  	// The corresponding recovered device
  1315  	// gets the specified <code>policyId</code>.
  1316  	Id BaseDeviceId `xml:"id,typeattr" json:"id"`
  1317  	// Policy id.
  1318  	PolicyId string `xml:"policyId" json:"policyId"`
  1319  	// Datastore object.
  1320  	//
  1321  	// Refers instance of `Datastore`.
  1322  	Datastore types.ManagedObjectReference `xml:"datastore" json:"datastore"`
  1323  }
  1324  
  1325  func init() {
  1326  	types.Add("sms:PolicyAssociation", reflect.TypeOf((*PolicyAssociation)(nil)).Elem())
  1327  }
  1328  
  1329  // The parameters of `VasaProvider.PrepareFailoverReplicationGroup_Task`.
  1330  type PrepareFailoverReplicationGroupRequestType struct {
  1331  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1332  	// List of replication group IDs.
  1333  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  1334  }
  1335  
  1336  func init() {
  1337  	types.Add("sms:PrepareFailoverReplicationGroupRequestType", reflect.TypeOf((*PrepareFailoverReplicationGroupRequestType)(nil)).Elem())
  1338  }
  1339  
  1340  type PrepareFailoverReplicationGroup_Task PrepareFailoverReplicationGroupRequestType
  1341  
  1342  func init() {
  1343  	types.Add("sms:PrepareFailoverReplicationGroup_Task", reflect.TypeOf((*PrepareFailoverReplicationGroup_Task)(nil)).Elem())
  1344  }
  1345  
  1346  type PrepareFailoverReplicationGroup_TaskResponse struct {
  1347  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  1348  }
  1349  
  1350  // Input to the promoteReplicationGroup method.
  1351  //
  1352  // This structure may be used only with operations rendered under `/sms`.
  1353  type PromoteParam struct {
  1354  	types.DynamicData
  1355  
  1356  	// Specifies whether the promote operation is a planned one.
  1357  	//
  1358  	// When this flag is set to false, the recovery VASA provider must not
  1359  	// try to connect to the primary VASA provider during promote.
  1360  	IsPlanned bool `xml:"isPlanned" json:"isPlanned"`
  1361  	// The replication groups to promote.
  1362  	//
  1363  	// It is legal for the VASA
  1364  	// provider to successfully promote only some groups. The
  1365  	// groups that did not succeed will be retried.
  1366  	//
  1367  	// The identifiers of the Virtual Volumes do not change after the
  1368  	// promote operation.
  1369  	ReplicationGroupsToPromote []types.ReplicationGroupId `xml:"replicationGroupsToPromote,omitempty" json:"replicationGroupsToPromote,omitempty"`
  1370  }
  1371  
  1372  func init() {
  1373  	types.Add("sms:PromoteParam", reflect.TypeOf((*PromoteParam)(nil)).Elem())
  1374  }
  1375  
  1376  // The parameters of `VasaProvider.PromoteReplicationGroup_Task`.
  1377  type PromoteReplicationGroupRequestType struct {
  1378  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1379  	// Specifies an array of replication group IDs whose
  1380  	// in-test devices (`ReplicationStateEnum#INTEST`) need to be
  1381  	// promoted to failover `ReplicationStateEnum#FAILEDOVER` state.
  1382  	PromoteParam PromoteParam `xml:"promoteParam" json:"promoteParam"`
  1383  }
  1384  
  1385  func init() {
  1386  	types.Add("sms:PromoteReplicationGroupRequestType", reflect.TypeOf((*PromoteReplicationGroupRequestType)(nil)).Elem())
  1387  }
  1388  
  1389  type PromoteReplicationGroup_Task PromoteReplicationGroupRequestType
  1390  
  1391  func init() {
  1392  	types.Add("sms:PromoteReplicationGroup_Task", reflect.TypeOf((*PromoteReplicationGroup_Task)(nil)).Elem())
  1393  }
  1394  
  1395  type PromoteReplicationGroup_TaskResponse struct {
  1396  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  1397  }
  1398  
  1399  // This exception is thrown if the VASA Provider on which the call is made
  1400  // is currently busy.
  1401  //
  1402  // This structure may be used only with operations rendered under `/sms`.
  1403  type ProviderBusy struct {
  1404  	types.MethodFault
  1405  }
  1406  
  1407  func init() {
  1408  	types.Add("sms:ProviderBusy", reflect.TypeOf((*ProviderBusy)(nil)).Elem())
  1409  }
  1410  
  1411  type ProviderBusyFault ProviderBusy
  1412  
  1413  func init() {
  1414  	types.Add("sms:ProviderBusyFault", reflect.TypeOf((*ProviderBusyFault)(nil)).Elem())
  1415  }
  1416  
  1417  // This fault is thrown if the Storage Monitoring Service failed to connect to the VASA provider.
  1418  //
  1419  // This structure may be used only with operations rendered under `/sms`.
  1420  type ProviderConnectionFailed struct {
  1421  	types.RuntimeFault
  1422  }
  1423  
  1424  func init() {
  1425  	types.Add("sms:ProviderConnectionFailed", reflect.TypeOf((*ProviderConnectionFailed)(nil)).Elem())
  1426  }
  1427  
  1428  type ProviderConnectionFailedFault ProviderConnectionFailed
  1429  
  1430  func init() {
  1431  	types.Add("sms:ProviderConnectionFailedFault", reflect.TypeOf((*ProviderConnectionFailedFault)(nil)).Elem())
  1432  }
  1433  
  1434  // This fault is thrown when a VASA provider cannot be found for the specified
  1435  // entities.
  1436  //
  1437  // This structure may be used only with operations rendered under `/sms`.
  1438  type ProviderNotFound struct {
  1439  	QueryExecutionFault
  1440  }
  1441  
  1442  func init() {
  1443  	types.Add("sms:ProviderNotFound", reflect.TypeOf((*ProviderNotFound)(nil)).Elem())
  1444  }
  1445  
  1446  type ProviderNotFoundFault ProviderNotFound
  1447  
  1448  func init() {
  1449  	types.Add("sms:ProviderNotFoundFault", reflect.TypeOf((*ProviderNotFoundFault)(nil)).Elem())
  1450  }
  1451  
  1452  // This exception is thrown if the VASA Provider is out of resource to satisfy
  1453  // a provisioning request.
  1454  //
  1455  // This structure may be used only with operations rendered under `/sms`.
  1456  type ProviderOutOfProvisioningResource struct {
  1457  	types.MethodFault
  1458  
  1459  	// Identifier of the provisioning resource.
  1460  	ProvisioningResourceId string `xml:"provisioningResourceId" json:"provisioningResourceId"`
  1461  	// Currently available.
  1462  	AvailableBefore int64 `xml:"availableBefore,omitempty" json:"availableBefore,omitempty"`
  1463  	// Necessary for provisioning.
  1464  	AvailableAfter int64 `xml:"availableAfter,omitempty" json:"availableAfter,omitempty"`
  1465  	// Total amount (free + used).
  1466  	Total int64 `xml:"total,omitempty" json:"total,omitempty"`
  1467  	// This resource limitation is transient, i.e.
  1468  	//
  1469  	// the resource
  1470  	// will be available after some time.
  1471  	IsTransient *bool `xml:"isTransient" json:"isTransient,omitempty"`
  1472  }
  1473  
  1474  func init() {
  1475  	types.Add("sms:ProviderOutOfProvisioningResource", reflect.TypeOf((*ProviderOutOfProvisioningResource)(nil)).Elem())
  1476  }
  1477  
  1478  type ProviderOutOfProvisioningResourceFault ProviderOutOfProvisioningResource
  1479  
  1480  func init() {
  1481  	types.Add("sms:ProviderOutOfProvisioningResourceFault", reflect.TypeOf((*ProviderOutOfProvisioningResourceFault)(nil)).Elem())
  1482  }
  1483  
  1484  // This exception is thrown if the VASA Provider on which the call is made
  1485  // is out of resource.
  1486  //
  1487  // This structure may be used only with operations rendered under `/sms`.
  1488  type ProviderOutOfResource struct {
  1489  	types.MethodFault
  1490  }
  1491  
  1492  func init() {
  1493  	types.Add("sms:ProviderOutOfResource", reflect.TypeOf((*ProviderOutOfResource)(nil)).Elem())
  1494  }
  1495  
  1496  type ProviderOutOfResourceFault ProviderOutOfResource
  1497  
  1498  func init() {
  1499  	types.Add("sms:ProviderOutOfResourceFault", reflect.TypeOf((*ProviderOutOfResourceFault)(nil)).Elem())
  1500  }
  1501  
  1502  // This fault is thrown if failed to register provider to storage
  1503  // management service.
  1504  //
  1505  // This structure may be used only with operations rendered under `/sms`.
  1506  type ProviderRegistrationFault struct {
  1507  	types.MethodFault
  1508  }
  1509  
  1510  func init() {
  1511  	types.Add("sms:ProviderRegistrationFault", reflect.TypeOf((*ProviderRegistrationFault)(nil)).Elem())
  1512  }
  1513  
  1514  type ProviderRegistrationFaultFault BaseProviderRegistrationFault
  1515  
  1516  func init() {
  1517  	types.Add("sms:ProviderRegistrationFaultFault", reflect.TypeOf((*ProviderRegistrationFaultFault)(nil)).Elem())
  1518  }
  1519  
  1520  // Thrown if a failure occurs when synchronizing the service
  1521  // cache with provider information.
  1522  //
  1523  // This structure may be used only with operations rendered under `/sms`.
  1524  type ProviderSyncFailed struct {
  1525  	types.MethodFault
  1526  }
  1527  
  1528  func init() {
  1529  	types.Add("sms:ProviderSyncFailed", reflect.TypeOf((*ProviderSyncFailed)(nil)).Elem())
  1530  }
  1531  
  1532  type ProviderSyncFailedFault BaseProviderSyncFailed
  1533  
  1534  func init() {
  1535  	types.Add("sms:ProviderSyncFailedFault", reflect.TypeOf((*ProviderSyncFailedFault)(nil)).Elem())
  1536  }
  1537  
  1538  // This exception is thrown if the VASA Provider on which the call is made is
  1539  // currently not available, e.g.
  1540  //
  1541  // VASA Provider is in offline state. This error
  1542  // usually means the provider is temporarily unavailable due to network outage, etc.
  1543  // The client is expected to wait for some time and retry the same call.
  1544  //
  1545  // This structure may be used only with operations rendered under `/sms`.
  1546  type ProviderUnavailable struct {
  1547  	types.MethodFault
  1548  }
  1549  
  1550  func init() {
  1551  	types.Add("sms:ProviderUnavailable", reflect.TypeOf((*ProviderUnavailable)(nil)).Elem())
  1552  }
  1553  
  1554  type ProviderUnavailableFault ProviderUnavailable
  1555  
  1556  func init() {
  1557  	types.Add("sms:ProviderUnavailableFault", reflect.TypeOf((*ProviderUnavailableFault)(nil)).Elem())
  1558  }
  1559  
  1560  // This fault is thrown if failed to unregister provider from storage
  1561  // management service.
  1562  //
  1563  // This structure may be used only with operations rendered under `/sms`.
  1564  type ProviderUnregistrationFault struct {
  1565  	types.MethodFault
  1566  }
  1567  
  1568  func init() {
  1569  	types.Add("sms:ProviderUnregistrationFault", reflect.TypeOf((*ProviderUnregistrationFault)(nil)).Elem())
  1570  }
  1571  
  1572  type ProviderUnregistrationFaultFault ProviderUnregistrationFault
  1573  
  1574  func init() {
  1575  	types.Add("sms:ProviderUnregistrationFaultFault", reflect.TypeOf((*ProviderUnregistrationFaultFault)(nil)).Elem())
  1576  }
  1577  
  1578  // This exception is thrown if the storage management service
  1579  // fails to register with the VirtualCenter proxy during
  1580  // initialization.
  1581  //
  1582  // This structure may be used only with operations rendered under `/sms`.
  1583  type ProxyRegistrationFailed struct {
  1584  	types.RuntimeFault
  1585  }
  1586  
  1587  func init() {
  1588  	types.Add("sms:ProxyRegistrationFailed", reflect.TypeOf((*ProxyRegistrationFailed)(nil)).Elem())
  1589  }
  1590  
  1591  type ProxyRegistrationFailedFault ProxyRegistrationFailed
  1592  
  1593  func init() {
  1594  	types.Add("sms:ProxyRegistrationFailedFault", reflect.TypeOf((*ProxyRegistrationFailedFault)(nil)).Elem())
  1595  }
  1596  
  1597  type QueryAboutInfo QueryAboutInfoRequestType
  1598  
  1599  func init() {
  1600  	types.Add("sms:QueryAboutInfo", reflect.TypeOf((*QueryAboutInfo)(nil)).Elem())
  1601  }
  1602  
  1603  type QueryAboutInfoRequestType struct {
  1604  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1605  }
  1606  
  1607  func init() {
  1608  	types.Add("sms:QueryAboutInfoRequestType", reflect.TypeOf((*QueryAboutInfoRequestType)(nil)).Elem())
  1609  }
  1610  
  1611  type QueryAboutInfoResponse struct {
  1612  	Returnval SmsAboutInfo `xml:"returnval" json:"returnval"`
  1613  }
  1614  
  1615  type QueryActiveAlarm QueryActiveAlarmRequestType
  1616  
  1617  func init() {
  1618  	types.Add("sms:QueryActiveAlarm", reflect.TypeOf((*QueryActiveAlarm)(nil)).Elem())
  1619  }
  1620  
  1621  // The parameters of `VasaProvider.QueryActiveAlarm`.
  1622  type QueryActiveAlarmRequestType struct {
  1623  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1624  	// Filter criteria for the alarm state.
  1625  	AlarmFilter *AlarmFilter `xml:"alarmFilter,omitempty" json:"alarmFilter,omitempty"`
  1626  }
  1627  
  1628  func init() {
  1629  	types.Add("sms:QueryActiveAlarmRequestType", reflect.TypeOf((*QueryActiveAlarmRequestType)(nil)).Elem())
  1630  }
  1631  
  1632  type QueryActiveAlarmResponse struct {
  1633  	Returnval *AlarmResult `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1634  }
  1635  
  1636  type QueryArray QueryArrayRequestType
  1637  
  1638  func init() {
  1639  	types.Add("sms:QueryArray", reflect.TypeOf((*QueryArray)(nil)).Elem())
  1640  }
  1641  
  1642  type QueryArrayAssociatedWithLun QueryArrayAssociatedWithLunRequestType
  1643  
  1644  func init() {
  1645  	types.Add("sms:QueryArrayAssociatedWithLun", reflect.TypeOf((*QueryArrayAssociatedWithLun)(nil)).Elem())
  1646  }
  1647  
  1648  // The parameters of `SmsStorageManager.QueryArrayAssociatedWithLun`.
  1649  type QueryArrayAssociatedWithLunRequestType struct {
  1650  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1651  	// `ScsiLun.canonicalName`
  1652  	// of ScsiLun
  1653  	CanonicalName string `xml:"canonicalName" json:"canonicalName"`
  1654  }
  1655  
  1656  func init() {
  1657  	types.Add("sms:QueryArrayAssociatedWithLunRequestType", reflect.TypeOf((*QueryArrayAssociatedWithLunRequestType)(nil)).Elem())
  1658  }
  1659  
  1660  type QueryArrayAssociatedWithLunResponse struct {
  1661  	Returnval *StorageArray `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1662  }
  1663  
  1664  // The parameters of `SmsStorageManager.QueryArray`.
  1665  type QueryArrayRequestType struct {
  1666  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1667  	// List of `SmsProviderInfo.uid` for the VASA
  1668  	// provider objects.
  1669  	ProviderId []string `xml:"providerId,omitempty" json:"providerId,omitempty"`
  1670  }
  1671  
  1672  func init() {
  1673  	types.Add("sms:QueryArrayRequestType", reflect.TypeOf((*QueryArrayRequestType)(nil)).Elem())
  1674  }
  1675  
  1676  type QueryArrayResponse struct {
  1677  	Returnval []StorageArray `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1678  }
  1679  
  1680  type QueryAssociatedBackingStoragePool QueryAssociatedBackingStoragePoolRequestType
  1681  
  1682  func init() {
  1683  	types.Add("sms:QueryAssociatedBackingStoragePool", reflect.TypeOf((*QueryAssociatedBackingStoragePool)(nil)).Elem())
  1684  }
  1685  
  1686  // The parameters of `SmsStorageManager.QueryAssociatedBackingStoragePool`.
  1687  type QueryAssociatedBackingStoragePoolRequestType struct {
  1688  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1689  	// Unique identifier of a StorageLun or StorageFileSystem.
  1690  	EntityId string `xml:"entityId,omitempty" json:"entityId,omitempty"`
  1691  	// Entity type of the entity specified using entityId. This can be either
  1692  	// StorageLun or StorageFileSystem.
  1693  	EntityType string `xml:"entityType,omitempty" json:"entityType,omitempty"`
  1694  }
  1695  
  1696  func init() {
  1697  	types.Add("sms:QueryAssociatedBackingStoragePoolRequestType", reflect.TypeOf((*QueryAssociatedBackingStoragePoolRequestType)(nil)).Elem())
  1698  }
  1699  
  1700  type QueryAssociatedBackingStoragePoolResponse struct {
  1701  	Returnval []BackingStoragePool `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1702  }
  1703  
  1704  type QueryDatastoreBackingPoolMapping QueryDatastoreBackingPoolMappingRequestType
  1705  
  1706  func init() {
  1707  	types.Add("sms:QueryDatastoreBackingPoolMapping", reflect.TypeOf((*QueryDatastoreBackingPoolMapping)(nil)).Elem())
  1708  }
  1709  
  1710  // The parameters of `SmsStorageManager.QueryDatastoreBackingPoolMapping`.
  1711  type QueryDatastoreBackingPoolMappingRequestType struct {
  1712  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1713  	// Array containing references to `Datastore` objects.
  1714  	//
  1715  	// Refers instances of `Datastore`.
  1716  	Datastore []types.ManagedObjectReference `xml:"datastore" json:"datastore"`
  1717  }
  1718  
  1719  func init() {
  1720  	types.Add("sms:QueryDatastoreBackingPoolMappingRequestType", reflect.TypeOf((*QueryDatastoreBackingPoolMappingRequestType)(nil)).Elem())
  1721  }
  1722  
  1723  type QueryDatastoreBackingPoolMappingResponse struct {
  1724  	Returnval []DatastoreBackingPoolMapping `xml:"returnval" json:"returnval"`
  1725  }
  1726  
  1727  type QueryDatastoreCapability QueryDatastoreCapabilityRequestType
  1728  
  1729  func init() {
  1730  	types.Add("sms:QueryDatastoreCapability", reflect.TypeOf((*QueryDatastoreCapability)(nil)).Elem())
  1731  }
  1732  
  1733  // The parameters of `SmsStorageManager.QueryDatastoreCapability`.
  1734  type QueryDatastoreCapabilityRequestType struct {
  1735  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1736  	// reference to `Datastore`
  1737  	//
  1738  	// Refers instance of `Datastore`.
  1739  	Datastore types.ManagedObjectReference `xml:"datastore" json:"datastore"`
  1740  }
  1741  
  1742  func init() {
  1743  	types.Add("sms:QueryDatastoreCapabilityRequestType", reflect.TypeOf((*QueryDatastoreCapabilityRequestType)(nil)).Elem())
  1744  }
  1745  
  1746  type QueryDatastoreCapabilityResponse struct {
  1747  	Returnval *StorageCapability `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1748  }
  1749  
  1750  type QueryDrsMigrationCapabilityForPerformance QueryDrsMigrationCapabilityForPerformanceRequestType
  1751  
  1752  func init() {
  1753  	types.Add("sms:QueryDrsMigrationCapabilityForPerformance", reflect.TypeOf((*QueryDrsMigrationCapabilityForPerformance)(nil)).Elem())
  1754  }
  1755  
  1756  type QueryDrsMigrationCapabilityForPerformanceEx QueryDrsMigrationCapabilityForPerformanceExRequestType
  1757  
  1758  func init() {
  1759  	types.Add("sms:QueryDrsMigrationCapabilityForPerformanceEx", reflect.TypeOf((*QueryDrsMigrationCapabilityForPerformanceEx)(nil)).Elem())
  1760  }
  1761  
  1762  // The parameters of `SmsStorageManager.QueryDrsMigrationCapabilityForPerformanceEx`.
  1763  type QueryDrsMigrationCapabilityForPerformanceExRequestType struct {
  1764  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1765  	// Array containing references to `Datastore` objects.
  1766  	//
  1767  	// Refers instances of `Datastore`.
  1768  	Datastore []types.ManagedObjectReference `xml:"datastore" json:"datastore"`
  1769  }
  1770  
  1771  func init() {
  1772  	types.Add("sms:QueryDrsMigrationCapabilityForPerformanceExRequestType", reflect.TypeOf((*QueryDrsMigrationCapabilityForPerformanceExRequestType)(nil)).Elem())
  1773  }
  1774  
  1775  type QueryDrsMigrationCapabilityForPerformanceExResponse struct {
  1776  	Returnval DrsMigrationCapabilityResult `xml:"returnval" json:"returnval"`
  1777  }
  1778  
  1779  // The parameters of `SmsStorageManager.QueryDrsMigrationCapabilityForPerformance`.
  1780  type QueryDrsMigrationCapabilityForPerformanceRequestType struct {
  1781  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1782  	// Reference to the source `Datastore`
  1783  	//
  1784  	// Refers instance of `Datastore`.
  1785  	SrcDatastore types.ManagedObjectReference `xml:"srcDatastore" json:"srcDatastore"`
  1786  	// Reference to the destination `Datastore`
  1787  	//
  1788  	// Refers instance of `Datastore`.
  1789  	DstDatastore types.ManagedObjectReference `xml:"dstDatastore" json:"dstDatastore"`
  1790  }
  1791  
  1792  func init() {
  1793  	types.Add("sms:QueryDrsMigrationCapabilityForPerformanceRequestType", reflect.TypeOf((*QueryDrsMigrationCapabilityForPerformanceRequestType)(nil)).Elem())
  1794  }
  1795  
  1796  type QueryDrsMigrationCapabilityForPerformanceResponse struct {
  1797  	Returnval bool `xml:"returnval" json:"returnval"`
  1798  }
  1799  
  1800  // This exception is thrown if a failure occurs while
  1801  // processing a query request.
  1802  //
  1803  // This structure may be used only with operations rendered under `/sms`.
  1804  type QueryExecutionFault struct {
  1805  	types.MethodFault
  1806  }
  1807  
  1808  func init() {
  1809  	types.Add("sms:QueryExecutionFault", reflect.TypeOf((*QueryExecutionFault)(nil)).Elem())
  1810  }
  1811  
  1812  type QueryExecutionFaultFault BaseQueryExecutionFault
  1813  
  1814  func init() {
  1815  	types.Add("sms:QueryExecutionFaultFault", reflect.TypeOf((*QueryExecutionFaultFault)(nil)).Elem())
  1816  }
  1817  
  1818  type QueryFaultDomain QueryFaultDomainRequestType
  1819  
  1820  func init() {
  1821  	types.Add("sms:QueryFaultDomain", reflect.TypeOf((*QueryFaultDomain)(nil)).Elem())
  1822  }
  1823  
  1824  // The parameters of `SmsStorageManager.QueryFaultDomain`.
  1825  type QueryFaultDomainRequestType struct {
  1826  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1827  	// spec for the query operation.
  1828  	Filter *FaultDomainFilter `xml:"filter,omitempty" json:"filter,omitempty"`
  1829  }
  1830  
  1831  func init() {
  1832  	types.Add("sms:QueryFaultDomainRequestType", reflect.TypeOf((*QueryFaultDomainRequestType)(nil)).Elem())
  1833  }
  1834  
  1835  type QueryFaultDomainResponse struct {
  1836  	Returnval []types.FaultDomainId `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1837  }
  1838  
  1839  type QueryFileSystemAssociatedWithArray QueryFileSystemAssociatedWithArrayRequestType
  1840  
  1841  func init() {
  1842  	types.Add("sms:QueryFileSystemAssociatedWithArray", reflect.TypeOf((*QueryFileSystemAssociatedWithArray)(nil)).Elem())
  1843  }
  1844  
  1845  // The parameters of `SmsStorageManager.QueryFileSystemAssociatedWithArray`.
  1846  type QueryFileSystemAssociatedWithArrayRequestType struct {
  1847  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1848  	// `StorageArray.uuid` for the StorageArray
  1849  	// object.
  1850  	ArrayId string `xml:"arrayId" json:"arrayId"`
  1851  }
  1852  
  1853  func init() {
  1854  	types.Add("sms:QueryFileSystemAssociatedWithArrayRequestType", reflect.TypeOf((*QueryFileSystemAssociatedWithArrayRequestType)(nil)).Elem())
  1855  }
  1856  
  1857  type QueryFileSystemAssociatedWithArrayResponse struct {
  1858  	Returnval []StorageFileSystem `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1859  }
  1860  
  1861  type QueryHostAssociatedWithLun QueryHostAssociatedWithLunRequestType
  1862  
  1863  func init() {
  1864  	types.Add("sms:QueryHostAssociatedWithLun", reflect.TypeOf((*QueryHostAssociatedWithLun)(nil)).Elem())
  1865  }
  1866  
  1867  // The parameters of `SmsStorageManager.QueryHostAssociatedWithLun`.
  1868  type QueryHostAssociatedWithLunRequestType struct {
  1869  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1870  	// `StorageLun.uuid` for the StorageLun
  1871  	// object.
  1872  	Scsi3Id string `xml:"scsi3Id" json:"scsi3Id"`
  1873  	// `StorageArray.uuid` for the StorageArray
  1874  	// object.
  1875  	ArrayId string `xml:"arrayId" json:"arrayId"`
  1876  }
  1877  
  1878  func init() {
  1879  	types.Add("sms:QueryHostAssociatedWithLunRequestType", reflect.TypeOf((*QueryHostAssociatedWithLunRequestType)(nil)).Elem())
  1880  }
  1881  
  1882  type QueryHostAssociatedWithLunResponse struct {
  1883  	Returnval []types.ManagedObjectReference `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1884  }
  1885  
  1886  type QueryLunAssociatedWithArray QueryLunAssociatedWithArrayRequestType
  1887  
  1888  func init() {
  1889  	types.Add("sms:QueryLunAssociatedWithArray", reflect.TypeOf((*QueryLunAssociatedWithArray)(nil)).Elem())
  1890  }
  1891  
  1892  // The parameters of `SmsStorageManager.QueryLunAssociatedWithArray`.
  1893  type QueryLunAssociatedWithArrayRequestType struct {
  1894  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1895  	// `StorageArray.uuid` for the StorageArray
  1896  	// object.
  1897  	ArrayId string `xml:"arrayId" json:"arrayId"`
  1898  }
  1899  
  1900  func init() {
  1901  	types.Add("sms:QueryLunAssociatedWithArrayRequestType", reflect.TypeOf((*QueryLunAssociatedWithArrayRequestType)(nil)).Elem())
  1902  }
  1903  
  1904  type QueryLunAssociatedWithArrayResponse struct {
  1905  	Returnval []StorageLun `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1906  }
  1907  
  1908  type QueryLunAssociatedWithPort QueryLunAssociatedWithPortRequestType
  1909  
  1910  func init() {
  1911  	types.Add("sms:QueryLunAssociatedWithPort", reflect.TypeOf((*QueryLunAssociatedWithPort)(nil)).Elem())
  1912  }
  1913  
  1914  // The parameters of `SmsStorageManager.QueryLunAssociatedWithPort`.
  1915  type QueryLunAssociatedWithPortRequestType struct {
  1916  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1917  	// `StoragePort.uuid` for the StoragePort
  1918  	// object.
  1919  	PortId string `xml:"portId" json:"portId"`
  1920  	// `StorageArray.uuid` for the StorageArray
  1921  	// object.
  1922  	ArrayId string `xml:"arrayId" json:"arrayId"`
  1923  }
  1924  
  1925  func init() {
  1926  	types.Add("sms:QueryLunAssociatedWithPortRequestType", reflect.TypeOf((*QueryLunAssociatedWithPortRequestType)(nil)).Elem())
  1927  }
  1928  
  1929  type QueryLunAssociatedWithPortResponse struct {
  1930  	Returnval []StorageLun `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1931  }
  1932  
  1933  type QueryNfsDatastoreAssociatedWithFileSystem QueryNfsDatastoreAssociatedWithFileSystemRequestType
  1934  
  1935  func init() {
  1936  	types.Add("sms:QueryNfsDatastoreAssociatedWithFileSystem", reflect.TypeOf((*QueryNfsDatastoreAssociatedWithFileSystem)(nil)).Elem())
  1937  }
  1938  
  1939  // The parameters of `SmsStorageManager.QueryNfsDatastoreAssociatedWithFileSystem`.
  1940  type QueryNfsDatastoreAssociatedWithFileSystemRequestType struct {
  1941  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  1942  	// `StorageFileSystem.uuid` for the
  1943  	// StorageFileSystem object
  1944  	FileSystemId string `xml:"fileSystemId" json:"fileSystemId"`
  1945  	// `StorageArray.uuid` for the StorageArray
  1946  	// object.
  1947  	ArrayId string `xml:"arrayId" json:"arrayId"`
  1948  }
  1949  
  1950  func init() {
  1951  	types.Add("sms:QueryNfsDatastoreAssociatedWithFileSystemRequestType", reflect.TypeOf((*QueryNfsDatastoreAssociatedWithFileSystemRequestType)(nil)).Elem())
  1952  }
  1953  
  1954  type QueryNfsDatastoreAssociatedWithFileSystemResponse struct {
  1955  	Returnval *types.ManagedObjectReference `xml:"returnval,omitempty" json:"returnval,omitempty"`
  1956  }
  1957  
  1958  // This exception is thrown if the specified entity and related
  1959  // entity type combination for a list query is not supported.
  1960  //
  1961  // This structure may be used only with operations rendered under `/sms`.
  1962  type QueryNotSupported struct {
  1963  	types.InvalidArgument
  1964  
  1965  	// Entity type.
  1966  	EntityType EntityReferenceEntityType `xml:"entityType,omitempty" json:"entityType,omitempty"`
  1967  	// Related entity type.
  1968  	RelatedEntityType EntityReferenceEntityType `xml:"relatedEntityType" json:"relatedEntityType"`
  1969  }
  1970  
  1971  func init() {
  1972  	types.Add("sms:QueryNotSupported", reflect.TypeOf((*QueryNotSupported)(nil)).Elem())
  1973  }
  1974  
  1975  type QueryNotSupportedFault QueryNotSupported
  1976  
  1977  func init() {
  1978  	types.Add("sms:QueryNotSupportedFault", reflect.TypeOf((*QueryNotSupportedFault)(nil)).Elem())
  1979  }
  1980  
  1981  type QueryPointInTimeReplica QueryPointInTimeReplicaRequestType
  1982  
  1983  func init() {
  1984  	types.Add("sms:QueryPointInTimeReplica", reflect.TypeOf((*QueryPointInTimeReplica)(nil)).Elem())
  1985  }
  1986  
  1987  // Describes the search criteria for the PiT query.
  1988  //
  1989  // If none of the fields
  1990  // is set, or if the number of PiT replicas is too large, VASA provider can
  1991  // return `QueryPointInTimeReplicaSummaryResult`.
  1992  //
  1993  // This structure may be used only with operations rendered under `/sms`.
  1994  type QueryPointInTimeReplicaParam struct {
  1995  	types.DynamicData
  1996  
  1997  	// Specifies the replica time span that vSphere is interested in.
  1998  	ReplicaTimeQueryParam *ReplicaQueryIntervalParam `xml:"replicaTimeQueryParam,omitempty" json:"replicaTimeQueryParam,omitempty"`
  1999  	// Only the replicas that match the given name are requested.
  2000  	//
  2001  	// A regexp according to http://www.w3.org/TR/xmlschema-2/#regexs.
  2002  	PitName string `xml:"pitName,omitempty" json:"pitName,omitempty"`
  2003  	// Only the replicas with tags that match the given tag(s) are requested.
  2004  	//
  2005  	// Each entry may be a regexp according to http://www.w3.org/TR/xmlschema-2/#regexs.
  2006  	Tags []string `xml:"tags,omitempty" json:"tags,omitempty"`
  2007  	// This field is hint for the preferred type of return results.
  2008  	//
  2009  	// It can be either true for `QueryPointInTimeReplicaSuccessResult` or
  2010  	// false for `QueryPointInTimeReplicaSummaryResult`.
  2011  	// If not set, VP may choose the appropriate type, as described in
  2012  	// <code>ReplicaQueryIntervalParam</code>.
  2013  	PreferDetails *bool `xml:"preferDetails" json:"preferDetails,omitempty"`
  2014  }
  2015  
  2016  func init() {
  2017  	types.Add("sms:QueryPointInTimeReplicaParam", reflect.TypeOf((*QueryPointInTimeReplicaParam)(nil)).Elem())
  2018  }
  2019  
  2020  // The parameters of `VasaProvider.QueryPointInTimeReplica`.
  2021  type QueryPointInTimeReplicaRequestType struct {
  2022  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2023  	// List of replication group IDs.
  2024  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  2025  	// Search criteria specification for all the groups.
  2026  	QueryParam *QueryPointInTimeReplicaParam `xml:"queryParam,omitempty" json:"queryParam,omitempty"`
  2027  }
  2028  
  2029  func init() {
  2030  	types.Add("sms:QueryPointInTimeReplicaRequestType", reflect.TypeOf((*QueryPointInTimeReplicaRequestType)(nil)).Elem())
  2031  }
  2032  
  2033  type QueryPointInTimeReplicaResponse struct {
  2034  	Returnval []BaseGroupOperationResult `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2035  }
  2036  
  2037  // Return type for successful
  2038  // *vasaService#queryPointInTimeReplica(ReplicationGroupId[], QueryPointInTimeReplicaParam)*
  2039  // operation.
  2040  //
  2041  // If the VASA provider decides that there are too many to return,
  2042  // it could set the result of some of the groups to `TooMany`
  2043  // fault or `QueryPointInTimeReplicaSummaryResult`.
  2044  //
  2045  // vSphere will then query for these groups separately.
  2046  //
  2047  // This structure may be used only with operations rendered under `/sms`.
  2048  type QueryPointInTimeReplicaSuccessResult struct {
  2049  	GroupOperationResult
  2050  
  2051  	// Information about the available replicas.
  2052  	ReplicaInfo []PointInTimeReplicaInfo `xml:"replicaInfo,omitempty" json:"replicaInfo,omitempty"`
  2053  }
  2054  
  2055  func init() {
  2056  	types.Add("sms:QueryPointInTimeReplicaSuccessResult", reflect.TypeOf((*QueryPointInTimeReplicaSuccessResult)(nil)).Elem())
  2057  }
  2058  
  2059  // Summary of the available replicas.
  2060  //
  2061  // Mostly useful for CDP type replicators.
  2062  //
  2063  // This structure may be used only with operations rendered under `/sms`.
  2064  type QueryPointInTimeReplicaSummaryResult struct {
  2065  	GroupOperationResult
  2066  
  2067  	// A series of query results.
  2068  	//
  2069  	// No special ordering is assumed by vSphere.
  2070  	IntervalResults []ReplicaIntervalQueryResult `xml:"intervalResults,omitempty" json:"intervalResults,omitempty"`
  2071  }
  2072  
  2073  func init() {
  2074  	types.Add("sms:QueryPointInTimeReplicaSummaryResult", reflect.TypeOf((*QueryPointInTimeReplicaSummaryResult)(nil)).Elem())
  2075  }
  2076  
  2077  type QueryPortAssociatedWithArray QueryPortAssociatedWithArrayRequestType
  2078  
  2079  func init() {
  2080  	types.Add("sms:QueryPortAssociatedWithArray", reflect.TypeOf((*QueryPortAssociatedWithArray)(nil)).Elem())
  2081  }
  2082  
  2083  // The parameters of `SmsStorageManager.QueryPortAssociatedWithArray`.
  2084  type QueryPortAssociatedWithArrayRequestType struct {
  2085  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2086  	// `StorageArray.uuid` for the StorageArray
  2087  	// object.
  2088  	ArrayId string `xml:"arrayId" json:"arrayId"`
  2089  }
  2090  
  2091  func init() {
  2092  	types.Add("sms:QueryPortAssociatedWithArrayRequestType", reflect.TypeOf((*QueryPortAssociatedWithArrayRequestType)(nil)).Elem())
  2093  }
  2094  
  2095  type QueryPortAssociatedWithArrayResponse struct {
  2096  	Returnval []BaseStoragePort `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2097  }
  2098  
  2099  type QueryPortAssociatedWithLun QueryPortAssociatedWithLunRequestType
  2100  
  2101  func init() {
  2102  	types.Add("sms:QueryPortAssociatedWithLun", reflect.TypeOf((*QueryPortAssociatedWithLun)(nil)).Elem())
  2103  }
  2104  
  2105  // The parameters of `SmsStorageManager.QueryPortAssociatedWithLun`.
  2106  type QueryPortAssociatedWithLunRequestType struct {
  2107  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2108  	// `StorageLun.uuid` for the StorageLun
  2109  	// object.
  2110  	Scsi3Id string `xml:"scsi3Id" json:"scsi3Id"`
  2111  	// `StorageArray.uuid` for the StorageArray
  2112  	// object.
  2113  	ArrayId string `xml:"arrayId" json:"arrayId"`
  2114  }
  2115  
  2116  func init() {
  2117  	types.Add("sms:QueryPortAssociatedWithLunRequestType", reflect.TypeOf((*QueryPortAssociatedWithLunRequestType)(nil)).Elem())
  2118  }
  2119  
  2120  type QueryPortAssociatedWithLunResponse struct {
  2121  	Returnval BaseStoragePort `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2122  }
  2123  
  2124  type QueryPortAssociatedWithProcessor QueryPortAssociatedWithProcessorRequestType
  2125  
  2126  func init() {
  2127  	types.Add("sms:QueryPortAssociatedWithProcessor", reflect.TypeOf((*QueryPortAssociatedWithProcessor)(nil)).Elem())
  2128  }
  2129  
  2130  // The parameters of `SmsStorageManager.QueryPortAssociatedWithProcessor`.
  2131  type QueryPortAssociatedWithProcessorRequestType struct {
  2132  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2133  	// `StorageProcessor.uuid` for the
  2134  	// StorageProcessor object.
  2135  	ProcessorId string `xml:"processorId" json:"processorId"`
  2136  	// `StorageArray.uuid` for the StorageArray
  2137  	// object.
  2138  	ArrayId string `xml:"arrayId" json:"arrayId"`
  2139  }
  2140  
  2141  func init() {
  2142  	types.Add("sms:QueryPortAssociatedWithProcessorRequestType", reflect.TypeOf((*QueryPortAssociatedWithProcessorRequestType)(nil)).Elem())
  2143  }
  2144  
  2145  type QueryPortAssociatedWithProcessorResponse struct {
  2146  	Returnval []BaseStoragePort `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2147  }
  2148  
  2149  type QueryProcessorAssociatedWithArray QueryProcessorAssociatedWithArrayRequestType
  2150  
  2151  func init() {
  2152  	types.Add("sms:QueryProcessorAssociatedWithArray", reflect.TypeOf((*QueryProcessorAssociatedWithArray)(nil)).Elem())
  2153  }
  2154  
  2155  // The parameters of `SmsStorageManager.QueryProcessorAssociatedWithArray`.
  2156  type QueryProcessorAssociatedWithArrayRequestType struct {
  2157  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2158  	// `StorageArray.uuid` for the StorageArray
  2159  	// object.
  2160  	ArrayId string `xml:"arrayId" json:"arrayId"`
  2161  }
  2162  
  2163  func init() {
  2164  	types.Add("sms:QueryProcessorAssociatedWithArrayRequestType", reflect.TypeOf((*QueryProcessorAssociatedWithArrayRequestType)(nil)).Elem())
  2165  }
  2166  
  2167  type QueryProcessorAssociatedWithArrayResponse struct {
  2168  	Returnval []StorageProcessor `xml:"returnval,omitempty" json:"returnval,omitempty"`
  2169  }
  2170  
  2171  type QueryProvider QueryProviderRequestType
  2172  
  2173  func init() {
  2174  	types.Add("sms:QueryProvider", reflect.TypeOf((*QueryProvider)(nil)).Elem())
  2175  }
  2176  
  2177  type QueryProviderInfo QueryProviderInfoRequestType
  2178  
  2179  func init() {
  2180  	types.Add("sms:QueryProviderInfo", reflect.TypeOf((*QueryProviderInfo)(nil)).Elem())
  2181  }
  2182  
  2183  type QueryProviderInfoRequestType struct {
  2184  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2185  }
  2186  
  2187  func init() {
  2188  	types.Add("sms:QueryProviderInfoRequestType", reflect.TypeOf((*QueryProviderInfoRequestType)(nil)).Elem())
  2189  }
  2190  
  2191  type QueryProviderInfoResponse struct {
  2192  	Returnval BaseSmsProviderInfo `xml:"returnval,typeattr" json:"returnval"`
  2193  }
  2194  
  2195  type QueryProviderRequestType struct {
  2196  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2197  }
  2198  
  2199  func init() {
  2200  	types.Add("sms:QueryProviderRequestType", reflect.TypeOf((*QueryProviderRequestType)(nil)).Elem())
  2201  }
  2202  
  2203  type QueryProviderResponse struct {
  2204  	Returnval []types.ManagedObjectReference `xml:"returnval,omitempty" json:"returnval,omitempty"`
  2205  }
  2206  
  2207  type QueryReplicationGroup QueryReplicationGroupRequestType
  2208  
  2209  func init() {
  2210  	types.Add("sms:QueryReplicationGroup", reflect.TypeOf((*QueryReplicationGroup)(nil)).Elem())
  2211  }
  2212  
  2213  type QueryReplicationGroupInfo QueryReplicationGroupInfoRequestType
  2214  
  2215  func init() {
  2216  	types.Add("sms:QueryReplicationGroupInfo", reflect.TypeOf((*QueryReplicationGroupInfo)(nil)).Elem())
  2217  }
  2218  
  2219  // The parameters of `SmsStorageManager.QueryReplicationGroupInfo`.
  2220  type QueryReplicationGroupInfoRequestType struct {
  2221  	This     types.ManagedObjectReference `xml:"_this" json:"_this"`
  2222  	RgFilter ReplicationGroupFilter       `xml:"rgFilter" json:"rgFilter"`
  2223  }
  2224  
  2225  func init() {
  2226  	types.Add("sms:QueryReplicationGroupInfoRequestType", reflect.TypeOf((*QueryReplicationGroupInfoRequestType)(nil)).Elem())
  2227  }
  2228  
  2229  type QueryReplicationGroupInfoResponse struct {
  2230  	Returnval []BaseGroupOperationResult `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2231  }
  2232  
  2233  // The parameters of `VasaProvider.QueryReplicationGroup`.
  2234  type QueryReplicationGroupRequestType struct {
  2235  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2236  	// List of replication group IDs.
  2237  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  2238  }
  2239  
  2240  func init() {
  2241  	types.Add("sms:QueryReplicationGroupRequestType", reflect.TypeOf((*QueryReplicationGroupRequestType)(nil)).Elem())
  2242  }
  2243  
  2244  type QueryReplicationGroupResponse struct {
  2245  	Returnval []BaseGroupOperationResult `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2246  }
  2247  
  2248  // Information about the replication groups.
  2249  //
  2250  // Information about both the source
  2251  // groups and the target groups is returned.
  2252  //
  2253  // This structure may be used only with operations rendered under `/sms`.
  2254  type QueryReplicationGroupSuccessResult struct {
  2255  	GroupOperationResult
  2256  
  2257  	// Information about the replication group.
  2258  	//
  2259  	// May be either
  2260  	// `SourceGroupInfo` or `TargetGroupInfo`.
  2261  	RgInfo BaseGroupInfo `xml:"rgInfo,typeattr" json:"rgInfo"`
  2262  }
  2263  
  2264  func init() {
  2265  	types.Add("sms:QueryReplicationGroupSuccessResult", reflect.TypeOf((*QueryReplicationGroupSuccessResult)(nil)).Elem())
  2266  }
  2267  
  2268  type QueryReplicationPeer QueryReplicationPeerRequestType
  2269  
  2270  func init() {
  2271  	types.Add("sms:QueryReplicationPeer", reflect.TypeOf((*QueryReplicationPeer)(nil)).Elem())
  2272  }
  2273  
  2274  // The parameters of `VasaProvider.QueryReplicationPeer`.
  2275  type QueryReplicationPeerRequestType struct {
  2276  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2277  	// An optional list of source fault domain ID.
  2278  	FaultDomainId []types.FaultDomainId `xml:"faultDomainId,omitempty" json:"faultDomainId,omitempty"`
  2279  }
  2280  
  2281  func init() {
  2282  	types.Add("sms:QueryReplicationPeerRequestType", reflect.TypeOf((*QueryReplicationPeerRequestType)(nil)).Elem())
  2283  }
  2284  
  2285  type QueryReplicationPeerResponse struct {
  2286  	Returnval []QueryReplicationPeerResult `xml:"returnval,omitempty" json:"returnval,omitempty"`
  2287  }
  2288  
  2289  // Information about the replication peers of a VASA provider.
  2290  //
  2291  // This structure may be used only with operations rendered under `/sms`.
  2292  type QueryReplicationPeerResult struct {
  2293  	types.DynamicData
  2294  
  2295  	// Source fault domain id, must correspond to an id from the input.
  2296  	SourceDomain types.FaultDomainId `xml:"sourceDomain" json:"sourceDomain"`
  2297  	// Target fault domains for the given source, fault domain ID's are globally
  2298  	// unique.
  2299  	//
  2300  	// There can be one or more target domains for a given source.
  2301  	TargetDomain []types.FaultDomainId `xml:"targetDomain,omitempty" json:"targetDomain,omitempty"`
  2302  	// Error must be set when targetDomain field is not set.
  2303  	Error []types.LocalizedMethodFault `xml:"error,omitempty" json:"error,omitempty"`
  2304  	// Optional warning messages.
  2305  	Warning []types.LocalizedMethodFault `xml:"warning,omitempty" json:"warning,omitempty"`
  2306  }
  2307  
  2308  func init() {
  2309  	types.Add("sms:QueryReplicationPeerResult", reflect.TypeOf((*QueryReplicationPeerResult)(nil)).Elem())
  2310  }
  2311  
  2312  type QuerySessionManager QuerySessionManagerRequestType
  2313  
  2314  func init() {
  2315  	types.Add("sms:QuerySessionManager", reflect.TypeOf((*QuerySessionManager)(nil)).Elem())
  2316  }
  2317  
  2318  type QuerySessionManagerRequestType struct {
  2319  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2320  }
  2321  
  2322  func init() {
  2323  	types.Add("sms:QuerySessionManagerRequestType", reflect.TypeOf((*QuerySessionManagerRequestType)(nil)).Elem())
  2324  }
  2325  
  2326  type QuerySessionManagerResponse struct {
  2327  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  2328  }
  2329  
  2330  type QuerySmsTaskInfo QuerySmsTaskInfoRequestType
  2331  
  2332  func init() {
  2333  	types.Add("sms:QuerySmsTaskInfo", reflect.TypeOf((*QuerySmsTaskInfo)(nil)).Elem())
  2334  }
  2335  
  2336  type QuerySmsTaskInfoRequestType struct {
  2337  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2338  }
  2339  
  2340  func init() {
  2341  	types.Add("sms:QuerySmsTaskInfoRequestType", reflect.TypeOf((*QuerySmsTaskInfoRequestType)(nil)).Elem())
  2342  }
  2343  
  2344  type QuerySmsTaskInfoResponse struct {
  2345  	Returnval SmsTaskInfo `xml:"returnval" json:"returnval"`
  2346  }
  2347  
  2348  type QuerySmsTaskResult QuerySmsTaskResultRequestType
  2349  
  2350  func init() {
  2351  	types.Add("sms:QuerySmsTaskResult", reflect.TypeOf((*QuerySmsTaskResult)(nil)).Elem())
  2352  }
  2353  
  2354  type QuerySmsTaskResultRequestType struct {
  2355  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2356  }
  2357  
  2358  func init() {
  2359  	types.Add("sms:QuerySmsTaskResultRequestType", reflect.TypeOf((*QuerySmsTaskResultRequestType)(nil)).Elem())
  2360  }
  2361  
  2362  type QuerySmsTaskResultResponse struct {
  2363  	Returnval types.AnyType `xml:"returnval,omitempty,typeattr" json:"returnval,omitempty"`
  2364  }
  2365  
  2366  type QueryStorageContainer QueryStorageContainerRequestType
  2367  
  2368  func init() {
  2369  	types.Add("sms:QueryStorageContainer", reflect.TypeOf((*QueryStorageContainer)(nil)).Elem())
  2370  }
  2371  
  2372  // The parameters of `SmsStorageManager.QueryStorageContainer`.
  2373  type QueryStorageContainerRequestType struct {
  2374  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2375  	// `StorageContainerSpec`
  2376  	ContainerSpec *StorageContainerSpec `xml:"containerSpec,omitempty" json:"containerSpec,omitempty"`
  2377  }
  2378  
  2379  func init() {
  2380  	types.Add("sms:QueryStorageContainerRequestType", reflect.TypeOf((*QueryStorageContainerRequestType)(nil)).Elem())
  2381  }
  2382  
  2383  type QueryStorageContainerResponse struct {
  2384  	Returnval *StorageContainerResult `xml:"returnval,omitempty" json:"returnval,omitempty"`
  2385  }
  2386  
  2387  type QueryStorageManager QueryStorageManagerRequestType
  2388  
  2389  func init() {
  2390  	types.Add("sms:QueryStorageManager", reflect.TypeOf((*QueryStorageManager)(nil)).Elem())
  2391  }
  2392  
  2393  type QueryStorageManagerRequestType struct {
  2394  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2395  }
  2396  
  2397  func init() {
  2398  	types.Add("sms:QueryStorageManagerRequestType", reflect.TypeOf((*QueryStorageManagerRequestType)(nil)).Elem())
  2399  }
  2400  
  2401  type QueryStorageManagerResponse struct {
  2402  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  2403  }
  2404  
  2405  type QueryVmfsDatastoreAssociatedWithLun QueryVmfsDatastoreAssociatedWithLunRequestType
  2406  
  2407  func init() {
  2408  	types.Add("sms:QueryVmfsDatastoreAssociatedWithLun", reflect.TypeOf((*QueryVmfsDatastoreAssociatedWithLun)(nil)).Elem())
  2409  }
  2410  
  2411  // The parameters of `SmsStorageManager.QueryVmfsDatastoreAssociatedWithLun`.
  2412  type QueryVmfsDatastoreAssociatedWithLunRequestType struct {
  2413  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2414  	// `StorageLun.uuid` for the StorageLun object
  2415  	Scsi3Id string `xml:"scsi3Id" json:"scsi3Id"`
  2416  	// `StorageArray.uuid` for the StorageArray
  2417  	// object.
  2418  	ArrayId string `xml:"arrayId" json:"arrayId"`
  2419  }
  2420  
  2421  func init() {
  2422  	types.Add("sms:QueryVmfsDatastoreAssociatedWithLunRequestType", reflect.TypeOf((*QueryVmfsDatastoreAssociatedWithLunRequestType)(nil)).Elem())
  2423  }
  2424  
  2425  type QueryVmfsDatastoreAssociatedWithLunResponse struct {
  2426  	Returnval *types.ManagedObjectReference `xml:"returnval,omitempty" json:"returnval,omitempty"`
  2427  }
  2428  
  2429  // Represents the device after the failover.
  2430  //
  2431  // Even though many of the fields in this structure are
  2432  // marked optional, it is important for VASA provider to
  2433  // make sure that the recovery of the entire ReplicationGroup succeeds
  2434  // atomically. The only valid scenario when there is a device specific
  2435  // recovery failure is when there is no valid replica for the Virtual Volume
  2436  // (e.g. Virtual Volume was just added to the ReplicationGroup).
  2437  //
  2438  // This structure may be used only with operations rendered under `/sms`.
  2439  type RecoveredDevice struct {
  2440  	types.DynamicData
  2441  
  2442  	// Identifier of the device which was the target of replication before
  2443  	// failover.
  2444  	TargetDeviceId *ReplicaId `xml:"targetDeviceId,omitempty" json:"targetDeviceId,omitempty"`
  2445  	// Identifier of the target device after test or failover.
  2446  	RecoveredDeviceId BaseDeviceId `xml:"recoveredDeviceId,omitempty,typeattr" json:"recoveredDeviceId,omitempty"`
  2447  	// Identifier of the source of the replication data before the failover
  2448  	// stopped the replication.
  2449  	SourceDeviceId BaseDeviceId `xml:"sourceDeviceId,typeattr" json:"sourceDeviceId"`
  2450  	// Informational messages.
  2451  	Info []string `xml:"info,omitempty" json:"info,omitempty"`
  2452  	// Datastore for the newly surfaced device.
  2453  	//
  2454  	// Refers instance of `Datastore`.
  2455  	Datastore types.ManagedObjectReference `xml:"datastore" json:"datastore"`
  2456  	// Only to be filled in if the `RecoveredDevice.recoveredDeviceId` is `VirtualMachineId`.
  2457  	RecoveredDiskInfo []RecoveredDiskInfo `xml:"recoveredDiskInfo,omitempty" json:"recoveredDiskInfo,omitempty"`
  2458  	// Virtual Volume specific recovery error.
  2459  	//
  2460  	// This should be rare.
  2461  	Error *types.LocalizedMethodFault `xml:"error,omitempty" json:"error,omitempty"`
  2462  	// Warnings.
  2463  	Warnings []types.LocalizedMethodFault `xml:"warnings,omitempty" json:"warnings,omitempty"`
  2464  }
  2465  
  2466  func init() {
  2467  	types.Add("sms:RecoveredDevice", reflect.TypeOf((*RecoveredDevice)(nil)).Elem())
  2468  }
  2469  
  2470  // Describes the recovered disks for a given virtual machine.
  2471  //
  2472  // Only applicable for VAIO based replicators. Upon recovery,
  2473  // all the replicated disks must be attached to the virtual machine,
  2474  // i.e. the VMX file must refer to the correct file paths. Device
  2475  // keys must be preserved and non-replicated disks can refer to
  2476  // non-existent file names.
  2477  // Array based replicators can ignore this class.
  2478  //
  2479  // This structure may be used only with operations rendered under `/sms`.
  2480  type RecoveredDiskInfo struct {
  2481  	types.DynamicData
  2482  
  2483  	// Virtual disk key.
  2484  	//
  2485  	// Note that disk device
  2486  	// keys must not change after recovery - in other words, the device
  2487  	// key is the same on both the source and target sites.
  2488  	//
  2489  	// For example, if a VMDK d1 is being replicated to d1', and d1 is attached as device
  2490  	// 2001 to the source VM, the recovered VM should have d1' attached
  2491  	// as 2001.
  2492  	DeviceKey int32 `xml:"deviceKey" json:"deviceKey"`
  2493  	// URL of the datastore that disk was recovered to.
  2494  	DsUrl string `xml:"dsUrl" json:"dsUrl"`
  2495  	// Full pathname of the disk.
  2496  	DiskPath string `xml:"diskPath" json:"diskPath"`
  2497  }
  2498  
  2499  func init() {
  2500  	types.Add("sms:RecoveredDiskInfo", reflect.TypeOf((*RecoveredDiskInfo)(nil)).Elem())
  2501  }
  2502  
  2503  // Information about member virtual volumes in a ReplicationGroup
  2504  // on the target after failover or testFailoverStart.
  2505  //
  2506  // This must include information about all the vSphere managed snapshots in
  2507  // the ReplicationGroup.
  2508  //
  2509  // This structure may be used only with operations rendered under `/sms`.
  2510  type RecoveredTargetGroupMemberInfo struct {
  2511  	TargetGroupMemberInfo
  2512  
  2513  	// Identifier of the target device after test or failover.
  2514  	RecoveredDeviceId BaseDeviceId `xml:"recoveredDeviceId,omitempty,typeattr" json:"recoveredDeviceId,omitempty"`
  2515  }
  2516  
  2517  func init() {
  2518  	types.Add("sms:RecoveredTargetGroupMemberInfo", reflect.TypeOf((*RecoveredTargetGroupMemberInfo)(nil)).Elem())
  2519  }
  2520  
  2521  // The parameters of `SmsStorageManager.RegisterProvider_Task`.
  2522  type RegisterProviderRequestType struct {
  2523  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2524  	// `SmsProviderSpec`
  2525  	// containing parameters needed to register the
  2526  	// provider
  2527  	ProviderSpec BaseSmsProviderSpec `xml:"providerSpec,typeattr" json:"providerSpec"`
  2528  }
  2529  
  2530  func init() {
  2531  	types.Add("sms:RegisterProviderRequestType", reflect.TypeOf((*RegisterProviderRequestType)(nil)).Elem())
  2532  }
  2533  
  2534  type RegisterProvider_Task RegisterProviderRequestType
  2535  
  2536  func init() {
  2537  	types.Add("sms:RegisterProvider_Task", reflect.TypeOf((*RegisterProvider_Task)(nil)).Elem())
  2538  }
  2539  
  2540  type RegisterProvider_TaskResponse struct {
  2541  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  2542  }
  2543  
  2544  // Indicates whether the provider has been marked as active for the given array
  2545  // for the session context.
  2546  //
  2547  // SMS uses `StorageArray.priority` value to mark a provider
  2548  // as active among the ones that are registered with SMS and manage this array.
  2549  //
  2550  // This structure may be used only with operations rendered under `/sms`.
  2551  type RelatedStorageArray struct {
  2552  	types.DynamicData
  2553  
  2554  	// `StorageArray.uuid` of StorageArray
  2555  	ArrayId string `xml:"arrayId" json:"arrayId"`
  2556  	// This field indicates whether the provider is currently serving data for the StorageArray
  2557  	Active bool `xml:"active" json:"active"`
  2558  	// Manageability status of StorageArray on VASA provider, if true it is manageable.
  2559  	Manageable bool `xml:"manageable" json:"manageable"`
  2560  	// Deprecated as of SMS API 6.0, replaced by `VasaProviderInfo.priority`.
  2561  	//
  2562  	// `StorageArray.priority` of StorageArray
  2563  	// For VASA 1.0 providers, this field is set to -1.
  2564  	Priority int32 `xml:"priority" json:"priority"`
  2565  }
  2566  
  2567  func init() {
  2568  	types.Add("sms:RelatedStorageArray", reflect.TypeOf((*RelatedStorageArray)(nil)).Elem())
  2569  }
  2570  
  2571  // Identifier of the replication target device.
  2572  //
  2573  // For Virtual Volumes, this could be the same as a Virtual Volume
  2574  // Id, for VMDK's this could be an FCD uuid, or some other ID
  2575  // made up by the replicator. This identifier is opaque to vSphere and
  2576  // hence does not have any distinguishing type. This can be used
  2577  // to identify the replica without the accompanying source device id
  2578  // (though there are no such uses in the current API).
  2579  //
  2580  // Since this an opaque type, the recovered device id at
  2581  // `RecoveredTargetGroupMemberInfo.recoveredDeviceId`
  2582  // should be filled in even if the values are the same.
  2583  //
  2584  // This structure may be used only with operations rendered under `/sms`.
  2585  type ReplicaId struct {
  2586  	types.DynamicData
  2587  
  2588  	Id string `xml:"id" json:"id"`
  2589  }
  2590  
  2591  func init() {
  2592  	types.Add("sms:ReplicaId", reflect.TypeOf((*ReplicaId)(nil)).Elem())
  2593  }
  2594  
  2595  // Summarizes the collection of replicas in one time interval.
  2596  //
  2597  // This structure may be used only with operations rendered under `/sms`.
  2598  type ReplicaIntervalQueryResult struct {
  2599  	types.DynamicData
  2600  
  2601  	// Beginning of interval (inclusive).
  2602  	FromDate time.Time `xml:"fromDate" json:"fromDate"`
  2603  	// End of interval (exclusive).
  2604  	ToDate time.Time `xml:"toDate" json:"toDate"`
  2605  	// Number of Point in Time replicas available for recovery.
  2606  	//
  2607  	// TODO: Do we want to have also ask for number of 'special'
  2608  	// PiTs e.g. those that are consistent?
  2609  	Number int32 `xml:"number" json:"number"`
  2610  }
  2611  
  2612  func init() {
  2613  	types.Add("sms:ReplicaIntervalQueryResult", reflect.TypeOf((*ReplicaIntervalQueryResult)(nil)).Elem())
  2614  }
  2615  
  2616  // Defines the parameters for a Point In Time replica (PiT) query.
  2617  //
  2618  // vSphere will not set all the three fields.
  2619  //
  2620  // In other words, the following combinations of fields are allowed:
  2621  // All the three fields are omitted.
  2622  // `ReplicaQueryIntervalParam.fromDate` and `ReplicaQueryIntervalParam.toDate` are set.
  2623  // `ReplicaQueryIntervalParam.fromDate` and `ReplicaQueryIntervalParam.number` are set.
  2624  // `ReplicaQueryIntervalParam.toDate` and `ReplicaQueryIntervalParam.number` are set.
  2625  //
  2626  // When all the fields are omitted, VASA provider should return
  2627  // `QueryPointInTimeReplicaSummaryResult`.
  2628  // But, returned result can be either `QueryPointInTimeReplicaSuccessResult`
  2629  // or `QueryPointInTimeReplicaSummaryResult` based on value i.e true or false
  2630  // respectively for field `QueryPointInTimeReplicaParam.preferDetails`.
  2631  //
  2632  // This structure may be used only with operations rendered under `/sms`.
  2633  type ReplicaQueryIntervalParam struct {
  2634  	types.DynamicData
  2635  
  2636  	// Return all PiTs including and later than <code>fromDate</code>.
  2637  	FromDate *time.Time `xml:"fromDate" json:"fromDate,omitempty"`
  2638  	// Return all PiTs earlier than <code>toDate</code>.
  2639  	ToDate *time.Time `xml:"toDate" json:"toDate,omitempty"`
  2640  	// Return information for only <code>number</code> entries.
  2641  	Number int32 `xml:"number,omitempty" json:"number,omitempty"`
  2642  }
  2643  
  2644  func init() {
  2645  	types.Add("sms:ReplicaQueryIntervalParam", reflect.TypeOf((*ReplicaQueryIntervalParam)(nil)).Elem())
  2646  }
  2647  
  2648  // Describes one Replication Group's data.
  2649  //
  2650  // This structure may be used only with operations rendered under `/sms`.
  2651  type ReplicationGroupData struct {
  2652  	types.DynamicData
  2653  
  2654  	// Replication group to failover.
  2655  	GroupId types.ReplicationGroupId `xml:"groupId" json:"groupId"`
  2656  	// The PIT that should be used for (test)Failover.
  2657  	//
  2658  	// Use the latest if not specified.
  2659  	PitId *PointInTimeReplicaId `xml:"pitId,omitempty" json:"pitId,omitempty"`
  2660  }
  2661  
  2662  func init() {
  2663  	types.Add("sms:ReplicationGroupData", reflect.TypeOf((*ReplicationGroupData)(nil)).Elem())
  2664  }
  2665  
  2666  // This spec contains information needed for `SmsStorageManager.QueryReplicationGroupInfo`
  2667  // API to filter the result.
  2668  //
  2669  // This structure may be used only with operations rendered under `/sms`.
  2670  type ReplicationGroupFilter struct {
  2671  	types.DynamicData
  2672  
  2673  	// Query for the given replication groups from their associated providers.
  2674  	//
  2675  	// The groupId cannot be null or empty.
  2676  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  2677  }
  2678  
  2679  func init() {
  2680  	types.Add("sms:ReplicationGroupFilter", reflect.TypeOf((*ReplicationGroupFilter)(nil)).Elem())
  2681  }
  2682  
  2683  // Information about each replication target.
  2684  //
  2685  // This structure may be used only with operations rendered under `/sms`.
  2686  type ReplicationTargetInfo struct {
  2687  	types.DynamicData
  2688  
  2689  	// Id of the target replication group (including the fault domain ID).
  2690  	TargetGroupId types.ReplicationGroupId `xml:"targetGroupId" json:"targetGroupId"`
  2691  	// Description of the replication agreement.
  2692  	//
  2693  	// This could be used to describe the characteristics of the replication
  2694  	// relationship between the source and the target (e.g. RPO, Replication
  2695  	// Mode, and other such properties). It is expected that VASA provider
  2696  	// will localize the string before sending to vSphere.
  2697  	ReplicationAgreementDescription string `xml:"replicationAgreementDescription,omitempty" json:"replicationAgreementDescription,omitempty"`
  2698  }
  2699  
  2700  func init() {
  2701  	types.Add("sms:ReplicationTargetInfo", reflect.TypeOf((*ReplicationTargetInfo)(nil)).Elem())
  2702  }
  2703  
  2704  // The parameters of `VasaProvider.ReverseReplicateGroup_Task`.
  2705  type ReverseReplicateGroupRequestType struct {
  2706  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2707  	// Array of replication groups (currently in
  2708  	// `ReplicationState#FAILEDOVER` state) that need to be reversed.
  2709  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  2710  }
  2711  
  2712  func init() {
  2713  	types.Add("sms:ReverseReplicateGroupRequestType", reflect.TypeOf((*ReverseReplicateGroupRequestType)(nil)).Elem())
  2714  }
  2715  
  2716  type ReverseReplicateGroup_Task ReverseReplicateGroupRequestType
  2717  
  2718  func init() {
  2719  	types.Add("sms:ReverseReplicateGroup_Task", reflect.TypeOf((*ReverseReplicateGroup_Task)(nil)).Elem())
  2720  }
  2721  
  2722  type ReverseReplicateGroup_TaskResponse struct {
  2723  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  2724  }
  2725  
  2726  // Represents the result of a successful reverse replication action.
  2727  //
  2728  // The newly
  2729  // established replication relation might have a different source group ID and
  2730  // different set of target group IDs. This means that the replication topology
  2731  // will need to be discovered again by the DR orchestration programs (SRM/CAM).
  2732  // However, we assume that after the reverse replication, the new source fault
  2733  // domain id remains the same as the old (i.e. before failover) fault domain id.
  2734  //
  2735  // This structure may be used only with operations rendered under `/sms`.
  2736  type ReverseReplicationSuccessResult struct {
  2737  	GroupOperationResult
  2738  
  2739  	// The replication group ID of the newly created source group.
  2740  	//
  2741  	// FaultDomainId
  2742  	// must remain the same.
  2743  	NewGroupId types.DeviceGroupId `xml:"newGroupId" json:"newGroupId"`
  2744  }
  2745  
  2746  func init() {
  2747  	types.Add("sms:ReverseReplicationSuccessResult", reflect.TypeOf((*ReverseReplicationSuccessResult)(nil)).Elem())
  2748  }
  2749  
  2750  // This exception is thrown if the storage management service
  2751  // has not yet been initialized successfully and therefore is
  2752  // not ready to process requests.
  2753  //
  2754  // This structure may be used only with operations rendered under `/sms`.
  2755  type ServiceNotInitialized struct {
  2756  	types.RuntimeFault
  2757  }
  2758  
  2759  func init() {
  2760  	types.Add("sms:ServiceNotInitialized", reflect.TypeOf((*ServiceNotInitialized)(nil)).Elem())
  2761  }
  2762  
  2763  type ServiceNotInitializedFault ServiceNotInitialized
  2764  
  2765  func init() {
  2766  	types.Add("sms:ServiceNotInitializedFault", reflect.TypeOf((*ServiceNotInitializedFault)(nil)).Elem())
  2767  }
  2768  
  2769  // This data object type describes system information.
  2770  //
  2771  // This structure may be used only with operations rendered under `/sms`.
  2772  type SmsAboutInfo struct {
  2773  	types.DynamicData
  2774  
  2775  	Name           string `xml:"name" json:"name"`
  2776  	FullName       string `xml:"fullName" json:"fullName"`
  2777  	Vendor         string `xml:"vendor" json:"vendor"`
  2778  	ApiVersion     string `xml:"apiVersion" json:"apiVersion"`
  2779  	InstanceUuid   string `xml:"instanceUuid" json:"instanceUuid"`
  2780  	VasaApiVersion string `xml:"vasaApiVersion,omitempty" json:"vasaApiVersion,omitempty"`
  2781  }
  2782  
  2783  func init() {
  2784  	types.Add("sms:SmsAboutInfo", reflect.TypeOf((*SmsAboutInfo)(nil)).Elem())
  2785  }
  2786  
  2787  // Thrown when login fails due to token not provided or token could not be
  2788  // validated.
  2789  //
  2790  // This structure may be used only with operations rendered under `/sms`.
  2791  type SmsInvalidLogin struct {
  2792  	types.MethodFault
  2793  }
  2794  
  2795  func init() {
  2796  	types.Add("sms:SmsInvalidLogin", reflect.TypeOf((*SmsInvalidLogin)(nil)).Elem())
  2797  }
  2798  
  2799  type SmsInvalidLoginFault SmsInvalidLogin
  2800  
  2801  func init() {
  2802  	types.Add("sms:SmsInvalidLoginFault", reflect.TypeOf((*SmsInvalidLoginFault)(nil)).Elem())
  2803  }
  2804  
  2805  // Information about Storage Monitoring Service (SMS)
  2806  // providers.
  2807  //
  2808  // This structure may be used only with operations rendered under `/sms`.
  2809  type SmsProviderInfo struct {
  2810  	types.DynamicData
  2811  
  2812  	// Unique identifier
  2813  	Uid string `xml:"uid" json:"uid"`
  2814  	// Name
  2815  	Name string `xml:"name" json:"name"`
  2816  	// Description of the provider
  2817  	Description string `xml:"description,omitempty" json:"description,omitempty"`
  2818  	// Version of the provider
  2819  	Version string `xml:"version,omitempty" json:"version,omitempty"`
  2820  }
  2821  
  2822  func init() {
  2823  	types.Add("sms:SmsProviderInfo", reflect.TypeOf((*SmsProviderInfo)(nil)).Elem())
  2824  }
  2825  
  2826  // Specification for Storage Monitoring Service (SMS)
  2827  // providers.
  2828  //
  2829  // This structure may be used only with operations rendered under `/sms`.
  2830  type SmsProviderSpec struct {
  2831  	types.DynamicData
  2832  
  2833  	// Name
  2834  	// The maximum length of the name is 275 characters.
  2835  	Name string `xml:"name" json:"name"`
  2836  	// Description of the provider
  2837  	Description string `xml:"description,omitempty" json:"description,omitempty"`
  2838  }
  2839  
  2840  func init() {
  2841  	types.Add("sms:SmsProviderSpec", reflect.TypeOf((*SmsProviderSpec)(nil)).Elem())
  2842  }
  2843  
  2844  // The parameters of `SmsStorageManager.SmsRefreshCACertificatesAndCRLs_Task`.
  2845  type SmsRefreshCACertificatesAndCRLsRequestType struct {
  2846  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  2847  	// `SmsProviderInfo.uid` for providers
  2848  	ProviderId []string `xml:"providerId,omitempty" json:"providerId,omitempty"`
  2849  }
  2850  
  2851  func init() {
  2852  	types.Add("sms:SmsRefreshCACertificatesAndCRLsRequestType", reflect.TypeOf((*SmsRefreshCACertificatesAndCRLsRequestType)(nil)).Elem())
  2853  }
  2854  
  2855  type SmsRefreshCACertificatesAndCRLs_Task SmsRefreshCACertificatesAndCRLsRequestType
  2856  
  2857  func init() {
  2858  	types.Add("sms:SmsRefreshCACertificatesAndCRLs_Task", reflect.TypeOf((*SmsRefreshCACertificatesAndCRLs_Task)(nil)).Elem())
  2859  }
  2860  
  2861  type SmsRefreshCACertificatesAndCRLs_TaskResponse struct {
  2862  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  2863  }
  2864  
  2865  // Base class for all Replication faults.
  2866  //
  2867  // This structure may be used only with operations rendered under `/sms`.
  2868  type SmsReplicationFault struct {
  2869  	types.MethodFault
  2870  }
  2871  
  2872  func init() {
  2873  	types.Add("sms:SmsReplicationFault", reflect.TypeOf((*SmsReplicationFault)(nil)).Elem())
  2874  }
  2875  
  2876  type SmsReplicationFaultFault BaseSmsReplicationFault
  2877  
  2878  func init() {
  2879  	types.Add("sms:SmsReplicationFaultFault", reflect.TypeOf((*SmsReplicationFaultFault)(nil)).Elem())
  2880  }
  2881  
  2882  // A ResourceInUse fault indicating that some error has occurred because
  2883  // some resources are in use.
  2884  //
  2885  // Information about the devices that are in
  2886  // use may be supplied.
  2887  //
  2888  // This structure may be used only with operations rendered under `/sms`.
  2889  type SmsResourceInUse struct {
  2890  	types.ResourceInUse
  2891  
  2892  	// The list of device Ids that are in use.
  2893  	DeviceIds []BaseDeviceId `xml:"deviceIds,omitempty,typeattr" json:"deviceIds,omitempty"`
  2894  }
  2895  
  2896  func init() {
  2897  	types.Add("sms:SmsResourceInUse", reflect.TypeOf((*SmsResourceInUse)(nil)).Elem())
  2898  }
  2899  
  2900  type SmsResourceInUseFault SmsResourceInUse
  2901  
  2902  func init() {
  2903  	types.Add("sms:SmsResourceInUseFault", reflect.TypeOf((*SmsResourceInUseFault)(nil)).Elem())
  2904  }
  2905  
  2906  // This data object type contains all information about a task.
  2907  //
  2908  // This structure may be used only with operations rendered under `/sms`.
  2909  type SmsTaskInfo struct {
  2910  	types.DynamicData
  2911  
  2912  	// The unique key for the task.
  2913  	Key string `xml:"key" json:"key"`
  2914  	// The managed object that represents this task.
  2915  	//
  2916  	// Refers instance of `SmsTask`.
  2917  	Task types.ManagedObjectReference `xml:"task" json:"task"`
  2918  	// Managed Object to which the operation applies.
  2919  	Object *types.ManagedObjectReference `xml:"object,omitempty" json:"object,omitempty"`
  2920  	// If the task state is "error", then this property contains the fault code.
  2921  	Error *types.LocalizedMethodFault `xml:"error,omitempty" json:"error,omitempty"`
  2922  	// If the task state is "success", then this property may be used
  2923  	// to hold a return value.
  2924  	Result types.AnyType `xml:"result,omitempty,typeattr" json:"result,omitempty"`
  2925  	// Time stamp when the task started running.
  2926  	StartTime *time.Time `xml:"startTime" json:"startTime,omitempty"`
  2927  	// Time stamp when the task was completed (whether success or failure).
  2928  	CompletionTime *time.Time `xml:"completionTime" json:"completionTime,omitempty"`
  2929  	// Runtime status of the task.
  2930  	//
  2931  	// Possible values are `SmsTaskState_enum`
  2932  	State string `xml:"state" json:"state"`
  2933  	// If the task state is "running", then this property contains a
  2934  	// progress measurement, expressed as percentage completed, from 0 to 100.
  2935  	//
  2936  	// If this property is not set, then the command does not report progress.
  2937  	Progress int32 `xml:"progress,omitempty" json:"progress,omitempty"`
  2938  }
  2939  
  2940  func init() {
  2941  	types.Add("sms:SmsTaskInfo", reflect.TypeOf((*SmsTaskInfo)(nil)).Elem())
  2942  }
  2943  
  2944  // Replication group details on the source.
  2945  //
  2946  // We do not assume the same
  2947  // Replication Group id on all the sites. This is returned as answer to
  2948  // queryReplicationGroup.
  2949  //
  2950  // This structure may be used only with operations rendered under `/sms`.
  2951  type SourceGroupInfo struct {
  2952  	GroupInfo
  2953  
  2954  	// Name of the replication group, may be edited after creating the
  2955  	// Replication Group, not unique.
  2956  	//
  2957  	// May be a localized string. Some vendors may
  2958  	// choose to use name as the group id, to support this, vSphere will not
  2959  	// allow the name to be modified - even if vSphere creates/manages the
  2960  	// Replication Group.
  2961  	Name string `xml:"name,omitempty" json:"name,omitempty"`
  2962  	// Description the Replication Group, may be edited after creating the
  2963  	// Replication Group.
  2964  	//
  2965  	// May be a localized string.
  2966  	Description string `xml:"description,omitempty" json:"description,omitempty"`
  2967  	// State of the replication group on the source.
  2968  	State string `xml:"state" json:"state"`
  2969  	// Information about the target Replication Groups.
  2970  	Replica []ReplicationTargetInfo `xml:"replica,omitempty" json:"replica,omitempty"`
  2971  	// Information about the member virtual volumes and their replicas.
  2972  	MemberInfo []SourceGroupMemberInfo `xml:"memberInfo,omitempty" json:"memberInfo,omitempty"`
  2973  }
  2974  
  2975  func init() {
  2976  	types.Add("sms:SourceGroupInfo", reflect.TypeOf((*SourceGroupInfo)(nil)).Elem())
  2977  }
  2978  
  2979  // Represents a member virtual volume of a replication group on the source end
  2980  // of the replication arrow.
  2981  //
  2982  // This structure may be used only with operations rendered under `/sms`.
  2983  type SourceGroupMemberInfo struct {
  2984  	types.DynamicData
  2985  
  2986  	// Identifier of the source device.
  2987  	//
  2988  	// May be a Virtual Volume, a Virtual Disk or a Virtual Machine
  2989  	DeviceId BaseDeviceId `xml:"deviceId,typeattr" json:"deviceId"`
  2990  	// Target devices, key'ed by the fault domain id.
  2991  	//
  2992  	// TODO: It is not clear if we
  2993  	// really need this information, since the target side query can return the
  2994  	// target - source relation information.
  2995  	TargetId []TargetDeviceId `xml:"targetId,omitempty" json:"targetId,omitempty"`
  2996  }
  2997  
  2998  func init() {
  2999  	types.Add("sms:SourceGroupMemberInfo", reflect.TypeOf((*SourceGroupMemberInfo)(nil)).Elem())
  3000  }
  3001  
  3002  // This data object represents the storage alarm.
  3003  //
  3004  // This structure may be used only with operations rendered under `/sms`.
  3005  type StorageAlarm struct {
  3006  	types.DynamicData
  3007  
  3008  	// Monotonically increasing sequence number which
  3009  	// VP will maintain.
  3010  	AlarmId int64 `xml:"alarmId" json:"alarmId"`
  3011  	// The type of Alarm.
  3012  	//
  3013  	// Must be one of the string values from
  3014  	// `AlarmType_enum`
  3015  	// Note that for VMODL VP implemenation this field must be populated with one
  3016  	// of the values from `vasa.data.notification.AlarmType`
  3017  	AlarmType string `xml:"alarmType" json:"alarmType"`
  3018  	// Container identifier
  3019  	ContainerId string `xml:"containerId,omitempty" json:"containerId,omitempty"`
  3020  	// The unique identifier of the object impacted by the Alarm.
  3021  	//
  3022  	// From VASA version 3 onwards, a non-null `StorageAlarm.alarmObject`
  3023  	// will override this member.
  3024  	// This field is made optional from VASA3. Either this or
  3025  	// `StorageAlarm.alarmObject` must be set.
  3026  	ObjectId string `xml:"objectId,omitempty" json:"objectId,omitempty"`
  3027  	// The type of object impacted by the Alarm.
  3028  	//
  3029  	// Must be one of the string values
  3030  	// from `SmsEntityType_enum`
  3031  	// Note that for VMODL VP implemenation this field must be populated with one
  3032  	// of the values from `vasa.data.notification.EntityType`
  3033  	ObjectType string `xml:"objectType" json:"objectType"`
  3034  	// Current status of the object.
  3035  	//
  3036  	// Must be one of the string values from
  3037  	// `SmsAlarmStatus_enum`
  3038  	Status string `xml:"status" json:"status"`
  3039  	// Time-stamp when the alarm occurred in VP context
  3040  	AlarmTimeStamp time.Time `xml:"alarmTimeStamp" json:"alarmTimeStamp"`
  3041  	// Pre-defined message for system-defined event
  3042  	MessageId string `xml:"messageId" json:"messageId"`
  3043  	// List of parameters (name/value) to be passed as input for message
  3044  	ParameterList []NameValuePair `xml:"parameterList,omitempty" json:"parameterList,omitempty"`
  3045  	// The ID of the object on which the alarm is raised; this is an object,
  3046  	// since ID's may not always be `String`s.
  3047  	//
  3048  	// vSphere will first use
  3049  	// `StorageAlarm.alarmObject` if set, and if not uses `StorageAlarm.objectId`.
  3050  	AlarmObject types.AnyType `xml:"alarmObject,omitempty,typeattr" json:"alarmObject,omitempty"`
  3051  }
  3052  
  3053  func init() {
  3054  	types.Add("sms:StorageAlarm", reflect.TypeOf((*StorageAlarm)(nil)).Elem())
  3055  }
  3056  
  3057  // This data object represents the storage array.
  3058  //
  3059  // This structure may be used only with operations rendered under `/sms`.
  3060  type StorageArray struct {
  3061  	types.DynamicData
  3062  
  3063  	// Name
  3064  	Name string `xml:"name" json:"name"`
  3065  	// Unique identifier
  3066  	Uuid string `xml:"uuid" json:"uuid"`
  3067  	// Storage array Vendor Id
  3068  	VendorId string `xml:"vendorId" json:"vendorId"`
  3069  	// Model Id
  3070  	ModelId string `xml:"modelId" json:"modelId"`
  3071  	// Storage array firmware
  3072  	Firmware string `xml:"firmware,omitempty" json:"firmware,omitempty"`
  3073  	// List of alternate storage array names
  3074  	AlternateName []string `xml:"alternateName,omitempty" json:"alternateName,omitempty"`
  3075  	// Supported block-device interfaces
  3076  	SupportedBlockInterface []string `xml:"supportedBlockInterface,omitempty" json:"supportedBlockInterface,omitempty"`
  3077  	// Supported file-system interfaces
  3078  	SupportedFileSystemInterface []string `xml:"supportedFileSystemInterface,omitempty" json:"supportedFileSystemInterface,omitempty"`
  3079  	// List of supported profiles
  3080  	SupportedProfile []string `xml:"supportedProfile,omitempty" json:"supportedProfile,omitempty"`
  3081  	// Deprecated as of SMS API 6.0, replaced by `VasaProviderInfo.priority`.
  3082  	//
  3083  	// Priority level of the provider for the given array within the session context.
  3084  	//
  3085  	// SMS will use this value to pick a provider among the ones that are registered
  3086  	// with SMS and manage this array. Once the provider is chosen, SMS will communicate
  3087  	// with it to get the data related to this array.
  3088  	// Valid range: 0 to 255.
  3089  	Priority int32 `xml:"priority,omitempty" json:"priority,omitempty"`
  3090  	// Required for NVMe-oF arrays and optional otherwise.
  3091  	//
  3092  	// Transport information to address the array's discovery service.
  3093  	DiscoverySvc []types.VASAStorageArrayDiscoverySvcInfo `xml:"discoverySvc,omitempty" json:"discoverySvc,omitempty"`
  3094  }
  3095  
  3096  func init() {
  3097  	types.Add("sms:StorageArray", reflect.TypeOf((*StorageArray)(nil)).Elem())
  3098  }
  3099  
  3100  // This data object represents the storage capability.
  3101  //
  3102  // This structure may be used only with operations rendered under `/sms`.
  3103  type StorageCapability struct {
  3104  	types.DynamicData
  3105  
  3106  	Uuid        string `xml:"uuid" json:"uuid"`
  3107  	Name        string `xml:"name" json:"name"`
  3108  	Description string `xml:"description" json:"description"`
  3109  }
  3110  
  3111  func init() {
  3112  	types.Add("sms:StorageCapability", reflect.TypeOf((*StorageCapability)(nil)).Elem())
  3113  }
  3114  
  3115  // This data object represents the storage container.
  3116  //
  3117  // This structure may be used only with operations rendered under `/sms`.
  3118  type StorageContainer struct {
  3119  	types.DynamicData
  3120  
  3121  	// Unique identifier
  3122  	Uuid string `xml:"uuid" json:"uuid"`
  3123  	// Name of the container
  3124  	Name string `xml:"name" json:"name"`
  3125  	// Maximum allowed capacity of the Virtual Volume in MBs
  3126  	MaxVvolSizeInMB int64 `xml:"maxVvolSizeInMB" json:"maxVvolSizeInMB"`
  3127  	// `SmsProviderInfo.uid` for providers that reports the storage container.
  3128  	ProviderId []string `xml:"providerId" json:"providerId"`
  3129  	ArrayId    []string `xml:"arrayId" json:"arrayId"`
  3130  	// Represents type of VVOL container, the supported values are listed in
  3131  	// `StorageContainerVvolContainerTypeEnum_enum`.
  3132  	//
  3133  	// If the storage array is not capable of supporting mixed PEs for a storage container,
  3134  	// the VVOL VASA provider sets this property to the supported endpoint type
  3135  	VvolContainerType string `xml:"vvolContainerType,omitempty" json:"vvolContainerType,omitempty"`
  3136  }
  3137  
  3138  func init() {
  3139  	types.Add("sms:StorageContainer", reflect.TypeOf((*StorageContainer)(nil)).Elem())
  3140  }
  3141  
  3142  // This data object represents information about storage containers and related providers.
  3143  //
  3144  // This structure may be used only with operations rendered under `/sms`.
  3145  type StorageContainerResult struct {
  3146  	types.DynamicData
  3147  
  3148  	// `StorageContainer` objects
  3149  	StorageContainer []StorageContainer `xml:"storageContainer,omitempty" json:"storageContainer,omitempty"`
  3150  	// `SmsProviderInfo` corresponding to providers that
  3151  	// report these storage containers
  3152  	ProviderInfo []BaseSmsProviderInfo `xml:"providerInfo,omitempty,typeattr" json:"providerInfo,omitempty"`
  3153  }
  3154  
  3155  func init() {
  3156  	types.Add("sms:StorageContainerResult", reflect.TypeOf((*StorageContainerResult)(nil)).Elem())
  3157  }
  3158  
  3159  // This data object represents the specification to query
  3160  // storage containers retrieved from VASA providers.
  3161  //
  3162  // This structure may be used only with operations rendered under `/sms`.
  3163  type StorageContainerSpec struct {
  3164  	types.DynamicData
  3165  
  3166  	ContainerId []string `xml:"containerId,omitempty" json:"containerId,omitempty"`
  3167  }
  3168  
  3169  func init() {
  3170  	types.Add("sms:StorageContainerSpec", reflect.TypeOf((*StorageContainerSpec)(nil)).Elem())
  3171  }
  3172  
  3173  // This data object represents the storage file-system.
  3174  //
  3175  // This structure may be used only with operations rendered under `/sms`.
  3176  type StorageFileSystem struct {
  3177  	types.DynamicData
  3178  
  3179  	// Unique identifier
  3180  	Uuid string `xml:"uuid" json:"uuid"`
  3181  	// Information about the file system
  3182  	Info                    []StorageFileSystemInfo `xml:"info" json:"info"`
  3183  	NativeSnapshotSupported bool                    `xml:"nativeSnapshotSupported" json:"nativeSnapshotSupported"`
  3184  	ThinProvisioningStatus  string                  `xml:"thinProvisioningStatus" json:"thinProvisioningStatus"`
  3185  	Type                    string                  `xml:"type" json:"type"`
  3186  	Version                 string                  `xml:"version" json:"version"`
  3187  	// Backing config information
  3188  	BackingConfig *BackingConfig `xml:"backingConfig,omitempty" json:"backingConfig,omitempty"`
  3189  }
  3190  
  3191  func init() {
  3192  	types.Add("sms:StorageFileSystem", reflect.TypeOf((*StorageFileSystem)(nil)).Elem())
  3193  }
  3194  
  3195  // This data object represents information about the storage
  3196  // file-system.
  3197  //
  3198  // This structure may be used only with operations rendered under `/sms`.
  3199  type StorageFileSystemInfo struct {
  3200  	types.DynamicData
  3201  
  3202  	// Server Name
  3203  	FileServerName string `xml:"fileServerName" json:"fileServerName"`
  3204  	// File Path
  3205  	FileSystemPath string `xml:"fileSystemPath" json:"fileSystemPath"`
  3206  	// IP address
  3207  	IpAddress string `xml:"ipAddress,omitempty" json:"ipAddress,omitempty"`
  3208  }
  3209  
  3210  func init() {
  3211  	types.Add("sms:StorageFileSystemInfo", reflect.TypeOf((*StorageFileSystemInfo)(nil)).Elem())
  3212  }
  3213  
  3214  // This data object represents the storage lun.
  3215  //
  3216  // This structure may be used only with operations rendered under `/sms`.
  3217  type StorageLun struct {
  3218  	types.DynamicData
  3219  
  3220  	// Unique Indentfier
  3221  	Uuid string `xml:"uuid" json:"uuid"`
  3222  	// Identifer reported by vSphere(ESX) for this LUN
  3223  	VSphereLunIdentifier string `xml:"vSphereLunIdentifier" json:"vSphereLunIdentifier"`
  3224  	// Display Name which appears in storage array management
  3225  	// console
  3226  	VendorDisplayName string `xml:"vendorDisplayName" json:"vendorDisplayName"`
  3227  	// Capacity In MB
  3228  	CapacityInMB int64 `xml:"capacityInMB" json:"capacityInMB"`
  3229  	// Used space in MB for a thin provisioned LUN
  3230  	UsedSpaceInMB int64 `xml:"usedSpaceInMB" json:"usedSpaceInMB"`
  3231  	// Indicates whether the LUN is thin provisioned
  3232  	LunThinProvisioned bool `xml:"lunThinProvisioned" json:"lunThinProvisioned"`
  3233  	// Alternate identifiers associated with the LUN
  3234  	AlternateIdentifier []string `xml:"alternateIdentifier,omitempty" json:"alternateIdentifier,omitempty"`
  3235  	// Indicates whether Storage DRS is permitted to manage
  3236  	// performance between this LUN and other LUNs from the same
  3237  	// array.
  3238  	DrsManagementPermitted bool   `xml:"drsManagementPermitted" json:"drsManagementPermitted"`
  3239  	ThinProvisioningStatus string `xml:"thinProvisioningStatus" json:"thinProvisioningStatus"`
  3240  	// Backing config information
  3241  	BackingConfig *BackingConfig `xml:"backingConfig,omitempty" json:"backingConfig,omitempty"`
  3242  }
  3243  
  3244  func init() {
  3245  	types.Add("sms:StorageLun", reflect.TypeOf((*StorageLun)(nil)).Elem())
  3246  }
  3247  
  3248  // This data object represents the storage port.
  3249  //
  3250  // This structure may be used only with operations rendered under `/sms`.
  3251  type StoragePort struct {
  3252  	types.DynamicData
  3253  
  3254  	// Unique identifier
  3255  	Uuid string `xml:"uuid" json:"uuid"`
  3256  	// Storage Port Type
  3257  	Type string `xml:"type" json:"type"`
  3258  	// Other identifiers which can help identify storage port
  3259  	AlternateName []string `xml:"alternateName,omitempty" json:"alternateName,omitempty"`
  3260  }
  3261  
  3262  func init() {
  3263  	types.Add("sms:StoragePort", reflect.TypeOf((*StoragePort)(nil)).Elem())
  3264  }
  3265  
  3266  // This data object represents the storage processor.
  3267  //
  3268  // This structure may be used only with operations rendered under `/sms`.
  3269  type StorageProcessor struct {
  3270  	types.DynamicData
  3271  
  3272  	// Unique Identifier
  3273  	Uuid string `xml:"uuid" json:"uuid"`
  3274  	// List of alternate identifiers
  3275  	AlternateIdentifer []string `xml:"alternateIdentifer,omitempty" json:"alternateIdentifer,omitempty"`
  3276  }
  3277  
  3278  func init() {
  3279  	types.Add("sms:StorageProcessor", reflect.TypeOf((*StorageProcessor)(nil)).Elem())
  3280  }
  3281  
  3282  // Mapping between the supported vendorID and corresponding
  3283  // modelID
  3284  //
  3285  // This structure may be used only with operations rendered under `/sms`.
  3286  type SupportedVendorModelMapping struct {
  3287  	types.DynamicData
  3288  
  3289  	// SCSI Vendor ID
  3290  	VendorId string `xml:"vendorId,omitempty" json:"vendorId,omitempty"`
  3291  	// SCSI Model ID
  3292  	ModelId string `xml:"modelId,omitempty" json:"modelId,omitempty"`
  3293  }
  3294  
  3295  func init() {
  3296  	types.Add("sms:SupportedVendorModelMapping", reflect.TypeOf((*SupportedVendorModelMapping)(nil)).Elem())
  3297  }
  3298  
  3299  // This exception is thrown if a sync operation is invoked
  3300  // while another sync invocation is in progress.
  3301  //
  3302  // This structure may be used only with operations rendered under `/sms`.
  3303  type SyncInProgress struct {
  3304  	ProviderSyncFailed
  3305  }
  3306  
  3307  func init() {
  3308  	types.Add("sms:SyncInProgress", reflect.TypeOf((*SyncInProgress)(nil)).Elem())
  3309  }
  3310  
  3311  type SyncInProgressFault SyncInProgress
  3312  
  3313  func init() {
  3314  	types.Add("sms:SyncInProgressFault", reflect.TypeOf((*SyncInProgressFault)(nil)).Elem())
  3315  }
  3316  
  3317  // Throw if an synchronization is ongoing.
  3318  //
  3319  // This structure may be used only with operations rendered under `/sms`.
  3320  type SyncOngoing struct {
  3321  	SmsReplicationFault
  3322  
  3323  	// Task identifier of the ongoing sync (@see sms.TaskInfo#key).
  3324  	//
  3325  	// Refers instance of `SmsTask`.
  3326  	Task types.ManagedObjectReference `xml:"task" json:"task"`
  3327  }
  3328  
  3329  func init() {
  3330  	types.Add("sms:SyncOngoing", reflect.TypeOf((*SyncOngoing)(nil)).Elem())
  3331  }
  3332  
  3333  type SyncOngoingFault SyncOngoing
  3334  
  3335  func init() {
  3336  	types.Add("sms:SyncOngoingFault", reflect.TypeOf((*SyncOngoingFault)(nil)).Elem())
  3337  }
  3338  
  3339  // The parameters of `VasaProvider.SyncReplicationGroup_Task`.
  3340  type SyncReplicationGroupRequestType struct {
  3341  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3342  	// List of replication group IDs.
  3343  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  3344  	// Localized name for the point-in-time snapshot created.
  3345  	PitName string `xml:"pitName" json:"pitName"`
  3346  }
  3347  
  3348  func init() {
  3349  	types.Add("sms:SyncReplicationGroupRequestType", reflect.TypeOf((*SyncReplicationGroupRequestType)(nil)).Elem())
  3350  }
  3351  
  3352  // Result object for a replication group that was successfully synchronized.
  3353  //
  3354  // This structure may be used only with operations rendered under `/sms`.
  3355  type SyncReplicationGroupSuccessResult struct {
  3356  	GroupOperationResult
  3357  
  3358  	// Creation time of the PIT
  3359  	TimeStamp time.Time `xml:"timeStamp" json:"timeStamp"`
  3360  	// PIT id.
  3361  	//
  3362  	// If the VASA provider does not support PIT, this can be
  3363  	// left unset.
  3364  	//
  3365  	// A PIT created as a result of the <code>syncReplicationGroup</code>
  3366  	// may or may not have the same retention policy as other PITs. A VASA provider
  3367  	// can choose to delete such a PIT after a successful <code>testFailoverStop</code>
  3368  	PitId   *PointInTimeReplicaId `xml:"pitId,omitempty" json:"pitId,omitempty"`
  3369  	PitName string                `xml:"pitName,omitempty" json:"pitName,omitempty"`
  3370  }
  3371  
  3372  func init() {
  3373  	types.Add("sms:SyncReplicationGroupSuccessResult", reflect.TypeOf((*SyncReplicationGroupSuccessResult)(nil)).Elem())
  3374  }
  3375  
  3376  type SyncReplicationGroup_Task SyncReplicationGroupRequestType
  3377  
  3378  func init() {
  3379  	types.Add("sms:SyncReplicationGroup_Task", reflect.TypeOf((*SyncReplicationGroup_Task)(nil)).Elem())
  3380  }
  3381  
  3382  type SyncReplicationGroup_TaskResponse struct {
  3383  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3384  }
  3385  
  3386  // Represents a replication target device, since the replication group id can
  3387  // be the same in all the domains, this is keyed by the fault domain id.
  3388  //
  3389  // This structure may be used only with operations rendered under `/sms`.
  3390  type TargetDeviceId struct {
  3391  	types.DynamicData
  3392  
  3393  	// ID of the fault domain.
  3394  	DomainId types.FaultDomainId `xml:"domainId" json:"domainId"`
  3395  	// ID of the target device.
  3396  	DeviceId ReplicaId `xml:"deviceId" json:"deviceId"`
  3397  }
  3398  
  3399  func init() {
  3400  	types.Add("sms:TargetDeviceId", reflect.TypeOf((*TargetDeviceId)(nil)).Elem())
  3401  }
  3402  
  3403  // Information about the replication target group.
  3404  //
  3405  // This is returned as answer
  3406  // to queryReplicationGroup before failover or testFailoverStart.
  3407  //
  3408  // This does not have to include the
  3409  // snapshot objects in the ReplicationGroup, however, see also
  3410  // `RecoveredTargetGroupMemberInfo`.
  3411  //
  3412  // This structure may be used only with operations rendered under `/sms`.
  3413  type TargetGroupInfo struct {
  3414  	GroupInfo
  3415  
  3416  	// Replication source information.
  3417  	SourceInfo TargetToSourceInfo `xml:"sourceInfo" json:"sourceInfo"`
  3418  	// Replication state of the group on the replication target.
  3419  	State string `xml:"state" json:"state"`
  3420  	// Member device information.
  3421  	//
  3422  	// When the ReplicationGroup is either in `FAILEDOVER`
  3423  	// or `INTEST`, this
  3424  	// should be `RecoveredTargetGroupMemberInfo`.
  3425  	// Otherwise, this should be `TargetGroupMemberInfo`
  3426  	Devices []BaseTargetGroupMemberInfo `xml:"devices,omitempty,typeattr" json:"devices,omitempty"`
  3427  	// Whether the VASA provider is capable of executing
  3428  	// `promoteReplicationGroup(ReplicationGroupId[])` for this
  3429  	// ReplicationGroup.
  3430  	//
  3431  	// False if not set. Note that this setting is per
  3432  	// ReplicationGroup per Target domain.
  3433  	IsPromoteCapable *bool `xml:"isPromoteCapable" json:"isPromoteCapable,omitempty"`
  3434  	// Name of Replication Group.
  3435  	Name string `xml:"name,omitempty" json:"name,omitempty"`
  3436  }
  3437  
  3438  func init() {
  3439  	types.Add("sms:TargetGroupInfo", reflect.TypeOf((*TargetGroupInfo)(nil)).Elem())
  3440  }
  3441  
  3442  // Information about member virtual volumes in a ReplicationGroup
  3443  // on the target when the state is `ReplicationStateEnum#TARGET`.
  3444  //
  3445  // This need not include information about all the snapshots in
  3446  // the ReplicationGroup.
  3447  //
  3448  // This structure may be used only with operations rendered under `/sms`.
  3449  type TargetGroupMemberInfo struct {
  3450  	types.DynamicData
  3451  
  3452  	// Identifier of the replica device.
  3453  	ReplicaId ReplicaId `xml:"replicaId" json:"replicaId"`
  3454  	// Source device, since the device id can be the same in all the domains,
  3455  	// this needs to supplemented with the domain id to identify the device.
  3456  	SourceId BaseDeviceId `xml:"sourceId,typeattr" json:"sourceId"`
  3457  	// Datastore of the target device.
  3458  	//
  3459  	// This may be used by CAM/SRM
  3460  	// to notify the administrators to setup access paths for the hosts
  3461  	// to access the recovered devices.
  3462  	//
  3463  	// Refers instance of `Datastore`.
  3464  	TargetDatastore types.ManagedObjectReference `xml:"targetDatastore" json:"targetDatastore"`
  3465  }
  3466  
  3467  func init() {
  3468  	types.Add("sms:TargetGroupMemberInfo", reflect.TypeOf((*TargetGroupMemberInfo)(nil)).Elem())
  3469  }
  3470  
  3471  // Information about each replication target.
  3472  //
  3473  // This structure may be used only with operations rendered under `/sms`.
  3474  type TargetToSourceInfo struct {
  3475  	types.DynamicData
  3476  
  3477  	// Id of the source CG id (including the fault domain ID).
  3478  	SourceGroupId types.ReplicationGroupId `xml:"sourceGroupId" json:"sourceGroupId"`
  3479  	// Description of the replication agreement.
  3480  	//
  3481  	// This could be used to describe the characteristics of the replication
  3482  	// relationship between the source and the target (e.g. RPO, Replication
  3483  	// Mode, and other such properties). It is expected that VASA provider
  3484  	// will localize the string before sending to vSphere.
  3485  	ReplicationAgreementDescription string `xml:"replicationAgreementDescription,omitempty" json:"replicationAgreementDescription,omitempty"`
  3486  }
  3487  
  3488  func init() {
  3489  	types.Add("sms:TargetToSourceInfo", reflect.TypeOf((*TargetToSourceInfo)(nil)).Elem())
  3490  }
  3491  
  3492  // Input to testFailover method.
  3493  //
  3494  // This structure may be used only with operations rendered under `/sms`.
  3495  type TestFailoverParam struct {
  3496  	FailoverParam
  3497  }
  3498  
  3499  func init() {
  3500  	types.Add("sms:TestFailoverParam", reflect.TypeOf((*TestFailoverParam)(nil)).Elem())
  3501  }
  3502  
  3503  // The parameters of `VasaProvider.TestFailoverReplicationGroupStart_Task`.
  3504  type TestFailoverReplicationGroupStartRequestType struct {
  3505  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3506  	// Settings for the failover.
  3507  	TestFailoverParam TestFailoverParam `xml:"testFailoverParam" json:"testFailoverParam"`
  3508  }
  3509  
  3510  func init() {
  3511  	types.Add("sms:TestFailoverReplicationGroupStartRequestType", reflect.TypeOf((*TestFailoverReplicationGroupStartRequestType)(nil)).Elem())
  3512  }
  3513  
  3514  type TestFailoverReplicationGroupStart_Task TestFailoverReplicationGroupStartRequestType
  3515  
  3516  func init() {
  3517  	types.Add("sms:TestFailoverReplicationGroupStart_Task", reflect.TypeOf((*TestFailoverReplicationGroupStart_Task)(nil)).Elem())
  3518  }
  3519  
  3520  type TestFailoverReplicationGroupStart_TaskResponse struct {
  3521  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3522  }
  3523  
  3524  // The parameters of `VasaProvider.TestFailoverReplicationGroupStop_Task`.
  3525  type TestFailoverReplicationGroupStopRequestType struct {
  3526  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3527  	// Array of replication groups that need to stop test.
  3528  	GroupId []types.ReplicationGroupId `xml:"groupId,omitempty" json:"groupId,omitempty"`
  3529  	// \- if true, VP should force-unbind all Virtual Volumes
  3530  	// and move the RG from INTEST to TARGET state. If false, VP will report all the
  3531  	// Virtual Volumes which need to be cleaned up before a failover operation
  3532  	// can be triggered. The default value will be false.
  3533  	Force bool `xml:"force" json:"force"`
  3534  }
  3535  
  3536  func init() {
  3537  	types.Add("sms:TestFailoverReplicationGroupStopRequestType", reflect.TypeOf((*TestFailoverReplicationGroupStopRequestType)(nil)).Elem())
  3538  }
  3539  
  3540  type TestFailoverReplicationGroupStop_Task TestFailoverReplicationGroupStopRequestType
  3541  
  3542  func init() {
  3543  	types.Add("sms:TestFailoverReplicationGroupStop_Task", reflect.TypeOf((*TestFailoverReplicationGroupStop_Task)(nil)).Elem())
  3544  }
  3545  
  3546  type TestFailoverReplicationGroupStop_TaskResponse struct {
  3547  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3548  }
  3549  
  3550  // This exception is thrown if the request exceeds the maximum number of
  3551  // elements in batch that the VASA Provider can support for the specific API.
  3552  //
  3553  // This structure may be used only with operations rendered under `/sms`.
  3554  type TooMany struct {
  3555  	types.MethodFault
  3556  
  3557  	// Maximum number of elements in batch that the VASA Provider can support
  3558  	// for the specific API.
  3559  	//
  3560  	// If the value is not specified (zero) or invalid
  3561  	// (negative), client will assume the default value is 1.
  3562  	MaxBatchSize int64 `xml:"maxBatchSize,omitempty" json:"maxBatchSize,omitempty"`
  3563  }
  3564  
  3565  func init() {
  3566  	types.Add("sms:TooMany", reflect.TypeOf((*TooMany)(nil)).Elem())
  3567  }
  3568  
  3569  type TooManyFault TooMany
  3570  
  3571  func init() {
  3572  	types.Add("sms:TooManyFault", reflect.TypeOf((*TooManyFault)(nil)).Elem())
  3573  }
  3574  
  3575  // The parameters of `SmsStorageManager.UnregisterProvider_Task`.
  3576  type UnregisterProviderRequestType struct {
  3577  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3578  	// `SmsProviderInfo.uid` for
  3579  	// the provider
  3580  	ProviderId string `xml:"providerId" json:"providerId"`
  3581  }
  3582  
  3583  func init() {
  3584  	types.Add("sms:UnregisterProviderRequestType", reflect.TypeOf((*UnregisterProviderRequestType)(nil)).Elem())
  3585  }
  3586  
  3587  type UnregisterProvider_Task UnregisterProviderRequestType
  3588  
  3589  func init() {
  3590  	types.Add("sms:UnregisterProvider_Task", reflect.TypeOf((*UnregisterProvider_Task)(nil)).Elem())
  3591  }
  3592  
  3593  type UnregisterProvider_TaskResponse struct {
  3594  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3595  }
  3596  
  3597  // Identity of a virtual volume for policy API purposes.
  3598  //
  3599  // For the sake of
  3600  // brevity, let us use VVolId. This works because the class is defined as a part
  3601  // of the policy package.
  3602  //
  3603  // WSDL names do not have this feature, but WSDL names are usually prefixed with
  3604  // the package name any way.
  3605  //
  3606  // This structure may be used only with operations rendered under `/sms`.
  3607  type VVolId struct {
  3608  	DeviceId
  3609  
  3610  	Id string `xml:"id" json:"id"`
  3611  }
  3612  
  3613  func init() {
  3614  	types.Add("sms:VVolId", reflect.TypeOf((*VVolId)(nil)).Elem())
  3615  }
  3616  
  3617  // Information about VASA (vStorage APIs for Storage Awareness) providers.
  3618  //
  3619  // This structure may be used only with operations rendered under `/sms`.
  3620  type VasaProviderInfo struct {
  3621  	SmsProviderInfo
  3622  
  3623  	// Provider URL
  3624  	Url string `xml:"url" json:"url"`
  3625  	// Provider certificate
  3626  	Certificate string `xml:"certificate,omitempty" json:"certificate,omitempty"`
  3627  	// The operational state of VASA Provider.
  3628  	Status string `xml:"status,omitempty" json:"status,omitempty"`
  3629  	// A fault that describes the cause of the current operational status.
  3630  	StatusFault *types.LocalizedMethodFault `xml:"statusFault,omitempty" json:"statusFault,omitempty"`
  3631  	// Supported VASA(vStorage APIs for Storage Awareness) version
  3632  	VasaVersion string `xml:"vasaVersion,omitempty" json:"vasaVersion,omitempty"`
  3633  	// Namespace to categorize storage capabilities provided by
  3634  	// arrays managed by the provider
  3635  	Namespace string `xml:"namespace,omitempty" json:"namespace,omitempty"`
  3636  	// Time stamp to indicate when last sync operation was completed
  3637  	// successfully.
  3638  	LastSyncTime string `xml:"lastSyncTime,omitempty" json:"lastSyncTime,omitempty"`
  3639  	// List containing mapping between the supported vendorID and
  3640  	// corresponding modelID
  3641  	SupportedVendorModelMapping []SupportedVendorModelMapping `xml:"supportedVendorModelMapping,omitempty" json:"supportedVendorModelMapping,omitempty"`
  3642  	// Deprecated as of SMS API 3.0, use `StorageArray.supportedProfile`.
  3643  	//
  3644  	// List of supported profiles
  3645  	SupportedProfile []string `xml:"supportedProfile,omitempty" json:"supportedProfile,omitempty"`
  3646  	// List of supported profiles at provider level.
  3647  	//
  3648  	// Must be one of the string
  3649  	// values from \* `sms.provider.VasaProviderInfo#ProviderProfile`.
  3650  	SupportedProviderProfile []string `xml:"supportedProviderProfile,omitempty" json:"supportedProviderProfile,omitempty"`
  3651  	// List containing mapping between storage arrays reported by the provider
  3652  	// and information such as whether the provider is considered active for them.
  3653  	RelatedStorageArray []RelatedStorageArray `xml:"relatedStorageArray,omitempty" json:"relatedStorageArray,omitempty"`
  3654  	// Provider identifier reported by the provider which is unique within
  3655  	// the provider namespace.
  3656  	ProviderId string `xml:"providerId,omitempty" json:"providerId,omitempty"`
  3657  	// Provider certificate expiry date.
  3658  	CertificateExpiryDate string `xml:"certificateExpiryDate,omitempty" json:"certificateExpiryDate,omitempty"`
  3659  	// Provider certificate status
  3660  	// This field holds values from `sms.Provider.VasaProviderInfo#CertificateStatus`
  3661  	CertificateStatus string `xml:"certificateStatus,omitempty" json:"certificateStatus,omitempty"`
  3662  	// Service location for the VASA endpoint that SMS is using
  3663  	// to communicate with the provider.
  3664  	ServiceLocation string `xml:"serviceLocation,omitempty" json:"serviceLocation,omitempty"`
  3665  	// Indicates the type of deployment supported by the provider.
  3666  	//
  3667  	// If true, it is an active/passive deployment and the provider needs to be
  3668  	// activated explicitly using activateProviderEx() VASA API.
  3669  	// If false, it is an active/active deployment and provider does not need any
  3670  	// explicit activation to respond to VASA calls.
  3671  	NeedsExplicitActivation *bool `xml:"needsExplicitActivation" json:"needsExplicitActivation,omitempty"`
  3672  	// Maximum number of elements in batch APIs that the VASA Provider can support.
  3673  	//
  3674  	// This value is common to all batch APIs supported by the provider. However,
  3675  	// for each specific API, the provider may still throw or return `TooMany`
  3676  	// fault in which a different value of maxBatchSize can be specified.
  3677  	// If the value is not specified (zero) or invalid (negative), client will
  3678  	// assume there's no common limit for the number of elements that can be
  3679  	// handled in all batch APIs.
  3680  	MaxBatchSize int64 `xml:"maxBatchSize,omitempty" json:"maxBatchSize,omitempty"`
  3681  	// Indicate whether the provider wants to retain its certificate after bootstrapping.
  3682  	//
  3683  	// If true, SMS will not provision a VMCA signed certificate for the provider
  3684  	// and all certificate life cycle management workflows are disabled for this provider certificate.
  3685  	// If false, SMS will provision a VMCA signed certificate for the provider and
  3686  	// all certificate life cycle management workflows are enabled for this provider certificate.
  3687  	RetainVasaProviderCertificate *bool `xml:"retainVasaProviderCertificate" json:"retainVasaProviderCertificate,omitempty"`
  3688  	// Indicates if this provider is independent of arrays.
  3689  	//
  3690  	// Default value for this flag is false, which means this provider supports
  3691  	// arrays. Arrays will be queried for this provider during sync. If this flag
  3692  	// is set to true, arrays will not be synced for this provider and array
  3693  	// related API will not be invoked on this provider.
  3694  	ArrayIndependentProvider *bool `xml:"arrayIndependentProvider" json:"arrayIndependentProvider,omitempty"`
  3695  	// Type of this VASA provider.
  3696  	//
  3697  	// This field will be equal to one of the values of `sms.provider.VasaProviderInfo#Type`.
  3698  	Type string `xml:"type,omitempty" json:"type,omitempty"`
  3699  	// This field indicates the category of the provider and will be equal to one of the values of
  3700  	// `VpCategory_enum`.
  3701  	Category string `xml:"category,omitempty" json:"category,omitempty"`
  3702  	// Priority level of the provider within a VASA HA group.
  3703  	//
  3704  	// For a stand-alone
  3705  	// provider which does not participate in VASA HA, this field will be ignored.
  3706  	//
  3707  	// The priority value is an integer with valid range from 0 to 255.
  3708  	Priority int32 `xml:"priority,omitempty" json:"priority,omitempty"`
  3709  	// Unique identifier of a VASA HA group.
  3710  	//
  3711  	// Providers should report this
  3712  	// identifier to utilize HA feature supported by vSphere. Different providers
  3713  	// reporting the same <code>failoverGroupId</code> will be treated as an HA
  3714  	// group. Failover/failback will be done within one group.
  3715  	FailoverGroupId string `xml:"failoverGroupId,omitempty" json:"failoverGroupId,omitempty"`
  3716  }
  3717  
  3718  func init() {
  3719  	types.Add("sms:VasaProviderInfo", reflect.TypeOf((*VasaProviderInfo)(nil)).Elem())
  3720  }
  3721  
  3722  type VasaProviderReconnectRequestType struct {
  3723  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3724  }
  3725  
  3726  func init() {
  3727  	types.Add("sms:VasaProviderReconnectRequestType", reflect.TypeOf((*VasaProviderReconnectRequestType)(nil)).Elem())
  3728  }
  3729  
  3730  type VasaProviderReconnect_Task VasaProviderReconnectRequestType
  3731  
  3732  func init() {
  3733  	types.Add("sms:VasaProviderReconnect_Task", reflect.TypeOf((*VasaProviderReconnect_Task)(nil)).Elem())
  3734  }
  3735  
  3736  type VasaProviderReconnect_TaskResponse struct {
  3737  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3738  }
  3739  
  3740  type VasaProviderRefreshCertificateRequestType struct {
  3741  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3742  }
  3743  
  3744  func init() {
  3745  	types.Add("sms:VasaProviderRefreshCertificateRequestType", reflect.TypeOf((*VasaProviderRefreshCertificateRequestType)(nil)).Elem())
  3746  }
  3747  
  3748  type VasaProviderRefreshCertificate_Task VasaProviderRefreshCertificateRequestType
  3749  
  3750  func init() {
  3751  	types.Add("sms:VasaProviderRefreshCertificate_Task", reflect.TypeOf((*VasaProviderRefreshCertificate_Task)(nil)).Elem())
  3752  }
  3753  
  3754  type VasaProviderRefreshCertificate_TaskResponse struct {
  3755  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3756  }
  3757  
  3758  type VasaProviderRevokeCertificateRequestType struct {
  3759  	This types.ManagedObjectReference `xml:"_this" json:"_this"`
  3760  }
  3761  
  3762  func init() {
  3763  	types.Add("sms:VasaProviderRevokeCertificateRequestType", reflect.TypeOf((*VasaProviderRevokeCertificateRequestType)(nil)).Elem())
  3764  }
  3765  
  3766  type VasaProviderRevokeCertificate_Task VasaProviderRevokeCertificateRequestType
  3767  
  3768  func init() {
  3769  	types.Add("sms:VasaProviderRevokeCertificate_Task", reflect.TypeOf((*VasaProviderRevokeCertificate_Task)(nil)).Elem())
  3770  }
  3771  
  3772  type VasaProviderRevokeCertificate_TaskResponse struct {
  3773  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3774  }
  3775  
  3776  // VASA(vStorage APIs for Storage Awareness) provider
  3777  // specification
  3778  //
  3779  // This structure may be used only with operations rendered under `/sms`.
  3780  type VasaProviderSpec struct {
  3781  	SmsProviderSpec
  3782  
  3783  	// Username
  3784  	// The maximum length of the username is 255 characters.
  3785  	Username string `xml:"username" json:"username"`
  3786  	// Password
  3787  	// The maximum length of the password is 255 characters.
  3788  	Password string `xml:"password" json:"password"`
  3789  	// URL
  3790  	Url string `xml:"url" json:"url"`
  3791  	// Certificate
  3792  	Certificate string `xml:"certificate,omitempty" json:"certificate,omitempty"`
  3793  }
  3794  
  3795  func init() {
  3796  	types.Add("sms:VasaProviderSpec", reflect.TypeOf((*VasaProviderSpec)(nil)).Elem())
  3797  }
  3798  
  3799  // The parameters of `VasaProvider.VasaProviderSync_Task`.
  3800  type VasaProviderSyncRequestType struct {
  3801  	This    types.ManagedObjectReference `xml:"_this" json:"_this"`
  3802  	ArrayId string                       `xml:"arrayId,omitempty" json:"arrayId,omitempty"`
  3803  }
  3804  
  3805  func init() {
  3806  	types.Add("sms:VasaProviderSyncRequestType", reflect.TypeOf((*VasaProviderSyncRequestType)(nil)).Elem())
  3807  }
  3808  
  3809  type VasaProviderSync_Task VasaProviderSyncRequestType
  3810  
  3811  func init() {
  3812  	types.Add("sms:VasaProviderSync_Task", reflect.TypeOf((*VasaProviderSync_Task)(nil)).Elem())
  3813  }
  3814  
  3815  type VasaProviderSync_TaskResponse struct {
  3816  	Returnval types.ManagedObjectReference `xml:"returnval" json:"returnval"`
  3817  }
  3818  
  3819  // Represents a virtual disk with a UUID (aka FCD).
  3820  //
  3821  // Virtual Volume VASA providers can ignore this class.
  3822  //
  3823  // This structure may be used only with operations rendered under `/sms`.
  3824  type VasaVirtualDiskId struct {
  3825  	DeviceId
  3826  
  3827  	// See VIM documentation for more details on first class storage - which is
  3828  	// new in 2016.
  3829  	DiskId string `xml:"diskId" json:"diskId"`
  3830  }
  3831  
  3832  func init() {
  3833  	types.Add("sms:VasaVirtualDiskId", reflect.TypeOf((*VasaVirtualDiskId)(nil)).Elem())
  3834  }
  3835  
  3836  // Represents a virtual disk.
  3837  //
  3838  // Ideally a UUID, since we do not yet have an FCD,
  3839  // let us use VM's UUID + diskKey.
  3840  // Virtual Volume VASA providers can ignore this class.
  3841  //
  3842  // This structure may be used only with operations rendered under `/sms`.
  3843  type VirtualDiskKey struct {
  3844  	DeviceId
  3845  
  3846  	// The vmInstanceUUID is unique to a VM.
  3847  	//
  3848  	// See
  3849  	// http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.ConfigInfo.html
  3850  	VmInstanceUUID string `xml:"vmInstanceUUID" json:"vmInstanceUUID"`
  3851  	DeviceKey      int32  `xml:"deviceKey" json:"deviceKey"`
  3852  }
  3853  
  3854  func init() {
  3855  	types.Add("sms:VirtualDiskKey", reflect.TypeOf((*VirtualDiskKey)(nil)).Elem())
  3856  }
  3857  
  3858  // Identifies a VirtualDisk uniquely using the disk key, vCenter managed object id of the VM it
  3859  // belongs to and the corresponding vCenter UUID.
  3860  //
  3861  // This structure may be used only with operations rendered under `/sms`.
  3862  type VirtualDiskMoId struct {
  3863  	DeviceId
  3864  
  3865  	// The vCenter UUID - this is informational only, and may not always be set.
  3866  	VcUuid string `xml:"vcUuid,omitempty" json:"vcUuid,omitempty"`
  3867  	// The managed object id that corresponds to vCenter's ManagedObjectReference#key for this VM.
  3868  	VmMoid string `xml:"vmMoid" json:"vmMoid"`
  3869  	// The disk key that corresponds to the VirtualDevice#key in vCenter.
  3870  	DiskKey string `xml:"diskKey" json:"diskKey"`
  3871  }
  3872  
  3873  func init() {
  3874  	types.Add("sms:VirtualDiskMoId", reflect.TypeOf((*VirtualDiskMoId)(nil)).Elem())
  3875  }
  3876  
  3877  // Identifies a virtual machine by its VMX file path.
  3878  //
  3879  // This structure may be used only with operations rendered under `/sms`.
  3880  type VirtualMachineFilePath struct {
  3881  	VirtualMachineId
  3882  
  3883  	// The vCenter UUID - this is informational only,
  3884  	// and may not always be set.
  3885  	VcUuid string `xml:"vcUuid,omitempty" json:"vcUuid,omitempty"`
  3886  	// Datastore URL, which is globally unique (name is not).
  3887  	DsUrl string `xml:"dsUrl" json:"dsUrl"`
  3888  	// Full path name from the URL onwards.
  3889  	//
  3890  	// When the vmxPath is returned after failover, the VMX file
  3891  	// should be fixed up to contain correct target filenames for all replicated
  3892  	// disks. For non-replicated disks, the target filenames can contain
  3893  	// any arbitrary path. For better security, it is recommended to
  3894  	// set these disks pointed to a random string (e.g. UUID).
  3895  	VmxPath string `xml:"vmxPath" json:"vmxPath"`
  3896  }
  3897  
  3898  func init() {
  3899  	types.Add("sms:VirtualMachineFilePath", reflect.TypeOf((*VirtualMachineFilePath)(nil)).Elem())
  3900  }
  3901  
  3902  // Abstracts the identity of a virtual machine.
  3903  //
  3904  // This structure may be used only with operations rendered under `/sms`.
  3905  type VirtualMachineId struct {
  3906  	DeviceId
  3907  }
  3908  
  3909  func init() {
  3910  	types.Add("sms:VirtualMachineId", reflect.TypeOf((*VirtualMachineId)(nil)).Elem())
  3911  }
  3912  
  3913  // Identifies a VirtualMachine uniquely using its vCenter managed object id and the corresponding
  3914  // vCenter UUID
  3915  //
  3916  // This structure may be used only with operations rendered under `/sms`.
  3917  type VirtualMachineMoId struct {
  3918  	VirtualMachineId
  3919  
  3920  	// The vCenter UUID - this is informational only, and may not always be set.
  3921  	VcUuid string `xml:"vcUuid,omitempty" json:"vcUuid,omitempty"`
  3922  	// The managed object id that corresponds to vCenter's ManagedObjectReference#key for this VM.
  3923  	VmMoid string `xml:"vmMoid" json:"vmMoid"`
  3924  }
  3925  
  3926  func init() {
  3927  	types.Add("sms:VirtualMachineMoId", reflect.TypeOf((*VirtualMachineMoId)(nil)).Elem())
  3928  }
  3929  
  3930  // Identifies a virtual machine by its vmInstanceUUID
  3931  //
  3932  // This structure may be used only with operations rendered under `/sms`.
  3933  type VirtualMachineUUID struct {
  3934  	VirtualMachineId
  3935  
  3936  	// The vmInstanceUUID is unique to a VM.
  3937  	//
  3938  	// See
  3939  	// http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.ConfigInfo.html
  3940  	VmInstanceUUID string `xml:"vmInstanceUUID" json:"vmInstanceUUID"`
  3941  }
  3942  
  3943  func init() {
  3944  	types.Add("sms:VirtualMachineUUID", reflect.TypeOf((*VirtualMachineUUID)(nil)).Elem())
  3945  }
  3946  
  3947  type VersionURI string
  3948  
  3949  func init() {
  3950  	types.Add("sms:versionURI", reflect.TypeOf((*VersionURI)(nil)).Elem())
  3951  }