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 )