github.com/vmware/go-vcloud-director/v2@v2.24.0/types/v56/link.go (about)

     1  /*
     2   * Copyright 2018 VMware, Inc.  All rights reserved.  Licensed under the Apache v2 License.
     3   */
     4  
     5  package types
     6  
     7  // LinkPredicate is a predicate for finding links in a link list
     8  type LinkPredicate func(*Link) bool
     9  
    10  func byTypeAndRel(tpe, rel string) LinkPredicate {
    11  	if rel == "" {
    12  		rel = RelDown
    13  	}
    14  	return func(lnk *Link) bool {
    15  		return lnk != nil && lnk.Type == tpe && lnk.Rel == rel
    16  	}
    17  }
    18  
    19  func byNameTypeAndRel(nme, tpe, rel string) LinkPredicate {
    20  	tpePred := byTypeAndRel(tpe, rel)
    21  	return func(lnk *Link) bool {
    22  		return tpePred(lnk) && lnk.Name == nme
    23  	}
    24  }
    25  
    26  // LinkList represents a list of links
    27  type LinkList []*Link
    28  
    29  // Find the first occurrence that matches the predicate
    30  func (l LinkList) Find(predicate LinkPredicate) *Link {
    31  	for _, lnk := range l {
    32  		if predicate(lnk) {
    33  			return lnk
    34  		}
    35  	}
    36  	return nil
    37  }
    38  
    39  // ForType finds a link for a given type
    40  func (l LinkList) ForType(tpe, rel string) *Link {
    41  	return l.Find(byTypeAndRel(tpe, rel))
    42  }
    43  
    44  // ForName finds a link for a given name and type
    45  func (l LinkList) ForName(name, tpe, rel string) *Link {
    46  	return l.Find(byNameTypeAndRel(name, tpe, rel))
    47  }
    48  
    49  const (
    50  	RelDown          = "down"
    51  	RelAdd           = "add"
    52  	RelUp            = "up"
    53  	RelEdit          = "edit"
    54  	RelRemove        = "remove"
    55  	RelCopy          = "copy"
    56  	RelMove          = "move"
    57  	RelAlternate     = "alternate"
    58  	RelTaskCancel    = "task:cancel"
    59  	RelDeploy        = "deploy"
    60  	RelUndeploy      = "undeploy"
    61  	RelDiscardState  = "discardState"
    62  	RelPowerOn       = "power:powerOn"
    63  	RelPowerOff      = "power:powerOff"
    64  	RelPowerReset    = "power:reset"
    65  	RelPowerReboot   = "power:reboot"
    66  	RelPowerSuspend  = "power:suspend"
    67  	RelPowerShutdown = "power:shutdown"
    68  
    69  	RelScreenThumbnail        = "screen:thumbnail"
    70  	RelScreenAcquireTicket    = "screen:acquireTicket"
    71  	RelScreenAcquireMksTicket = "screen:acquireMksTicket"
    72  
    73  	RelMediaInsertMedia = "media:insertMedia"
    74  	RelMediaEjectMedia  = "media:ejectMedia"
    75  
    76  	RelDiskAttach = "disk:attach"
    77  	RelDiskDetach = "disk:detach"
    78  
    79  	RelUploadDefault   = "upload:default"
    80  	RelUploadAlternate = "upload:alternate"
    81  
    82  	RelDownloadDefault   = "download:default"
    83  	RelDownloadAlternate = "download:alternate"
    84  	RelDownloadIdentity  = "download:identity"
    85  
    86  	RelSnapshotCreate          = "snapshot:create"
    87  	RelSnapshotRevertToCurrent = "snapshot:revertToCurrent"
    88  	RelSnapshotRemoveAll       = "snapshot:removeAll"
    89  
    90  	RelOVF               = "ovf"
    91  	RelOVA               = "ova"
    92  	RelControlAccess     = "controlAccess"
    93  	RelPublish           = "publish"
    94  	RelPublishExternal   = "publishToExternalOrganizations"
    95  	RelSubscribeExternal = "subscribeToExternalCatalog"
    96  	RelExtension         = "extension"
    97  	RelEnable            = "enable"
    98  	RelDisable           = "disable"
    99  	RelMerge             = "merge"
   100  	RelCatalogItem       = "catalogItem"
   101  	RelRecompose         = "recompose"
   102  	RelRegister          = "register"
   103  	RelUnregister        = "unregister"
   104  	RelRepair            = "repair"
   105  	RelReconnect         = "reconnect"
   106  	RelDisconnect        = "disconnect"
   107  	RelUpgrade           = "upgrade"
   108  	RelAnswer            = "answer"
   109  	RelAddOrgs           = "addOrgs"
   110  	RelRemoveOrgs        = "removeOrgs"
   111  	RelSync              = "sync"
   112  
   113  	RelVSphereWebClientURL = "vSphereWebClientUrl"
   114  	RelVimServerDvSwitches = "vimServerDvSwitches"
   115  
   116  	RelCollaborationResume    = "resume"
   117  	RelCollaborationFail      = "fail"
   118  	RelEnterMaintenanceMode   = "enterMaintenanceMode"
   119  	RelExitMaintenanceMode    = "exitMaintenanceMode"
   120  	RelTask                   = "task"
   121  	RelTaskOwner              = "task:owner"
   122  	RelPreviousPage           = "previousPage"
   123  	RelNextPage               = "nextPage"
   124  	RelFirstPage              = "firstPage"
   125  	RelLastPage               = "lastPage"
   126  	RelInstallVMWareTools     = "installVmwareTools"
   127  	RelConsolidate            = "consolidate"
   128  	RelEntity                 = "entity"
   129  	RelEntityResolver         = "entityResolver"
   130  	RelRelocate               = "relocate"
   131  	RelBlockingTasks          = "blockingTasks"
   132  	RelUpdateProgress         = "updateProgress"
   133  	RelSyncSyslogSettings     = "syncSyslogSettings"
   134  	RelTakeOwnership          = "takeOwnership"
   135  	RelUnlock                 = "unlock"
   136  	RelShadowVMs              = "shadowVms"
   137  	RelTest                   = "test"
   138  	RelUpdateResourcePools    = "update:resourcePools"
   139  	RelRemoveForce            = "remove:force"
   140  	RelStorageClass           = "storageProfile"
   141  	RelRefreshStorageClasses  = "refreshStorageProfile"
   142  	RelRefreshVirtualCenter   = "refreshVirtualCenter"
   143  	RelCheckCompliance        = "checkCompliance"
   144  	RelForceFullCustomization = "customizeAtNextPowerOn"
   145  	RelReloadFromVC           = "reloadFromVc"
   146  	RelMetricsDayView         = "interval:day"
   147  	RelMetricsWeekView        = "interval:week"
   148  	RelMetricsMonthView       = "interval:month"
   149  	RelMetricsYearView        = "interval:year"
   150  	RelMetricsPreviousRange   = "range:previous"
   151  	RelMetricsNextRange       = "range:next"
   152  	RelMetricsLatestRange     = "range:latest"
   153  	RelRights                 = "rights"
   154  	RelMigratVMs              = "migrateVms"
   155  	RelResourcePoolVMList     = "resourcePoolVmList"
   156  	RelCreateEvent            = "event:create"
   157  	RelCreateTask             = "task:create"
   158  	RelUploadBundle           = "bundle:upload"
   159  	RelCleanupBundles         = "bundles:cleanup"
   160  	RelAuthorizationCheck     = "authorization:check"
   161  	RelCleanupRights          = "rights:cleanup"
   162  
   163  	RelEdgeGatewayRedeploy           = "edgeGateway:redeploy"
   164  	RelEdgeGatewayReapplyServices    = "edgeGateway:reapplyServices"
   165  	RelEdgeGatewayConfigureServices  = "edgeGateway:configureServices"
   166  	RelEdgeGatewayConfigureSyslog    = "edgeGateway:configureSyslogServerSettings"
   167  	RelEdgeGatewaySyncSyslogSettings = "edgeGateway:syncSyslogSettings"
   168  	RelEdgeGatewayUpgrade            = "edgeGateway:upgrade"
   169  	RelEdgeGatewayUpgradeNetworking  = "edgeGateway:convertToAdvancedNetworking"
   170  	RelVDCManageFirewall             = "manageFirewall"
   171  
   172  	RelCertificateUpdate = "certificate:update"
   173  	RelCertificateReset  = "certificate:reset"
   174  	RelTruststoreUpdate  = "truststore:update"
   175  	RelTruststoreReset   = "truststore:reset"
   176  	RelKeyStoreUpdate    = "keystore:update"
   177  	RelKeystoreReset     = "keystore:reset"
   178  	RelKeytabUpdate      = "keytab:update"
   179  	RelKeytabReset       = "keytab:reset"
   180  
   181  	RelServiceLinks             = "down:serviceLinks"
   182  	RelAPIFilters               = "down:apiFilters"
   183  	RelResourceClasses          = "down:resourceClasses"
   184  	RelResourceClassActions     = "down:resourceClassActions"
   185  	RelServices                 = "down:services"
   186  	RelACLRules                 = "down:aclRules"
   187  	RelFileDescriptors          = "down:fileDescriptors"
   188  	RelAPIDefinitions           = "down:apiDefinitions"
   189  	RelServiceResources         = "down:serviceResources"
   190  	RelExtensibility            = "down:extensibility"
   191  	RelAPIServiceQuery          = "down:service"
   192  	RelAPIDefinitionsQuery      = "down:apidefinitions"
   193  	RelAPIFilesQuery            = "down:files"
   194  	RelServiceOfferings         = "down:serviceOfferings"
   195  	RelServiceOfferingInstances = "down:serviceOfferingInstances"
   196  	RelHybrid                   = "down:hybrid"
   197  
   198  	RelServiceRefresh      = "service:refresh"
   199  	RelServiceAssociate    = "service:associate"
   200  	RelServiceDisassociate = "service:disassociate"
   201  
   202  	RelReconfigureVM = "reconfigureVM"
   203  
   204  	RelOrgVDCGateways = "edgeGateways"
   205  	RelOrgVDCNetworks = "orgVdcNetworks"
   206  
   207  	RelHybridAcquireControlTicket = "hybrid:acquireControlTicket"
   208  	RelHybridAcquireTicket        = "hybrid:acquireTicket"
   209  	RelHybridRefreshTunnel        = "hybrid:refreshTunnel"
   210  
   211  	RelMetrics = "metrics"
   212  
   213  	RelFederationRegenerateCertificate = "federation:regenerateFederationCertificate"
   214  	RelTemplateInstantiate             = "instantiate"
   215  )