github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/endpoint_search.go (about) 1 package golangsdk 2 3 // Availability indicates to whom a specific service endpoint is accessible: 4 // the internet at large, internal networks only, or only to administrators. 5 // Different identity services use different terminology for these. Identity v2 6 // lists them as different kinds of URLs within the service catalog ("adminURL", 7 // "internalURL", and "publicURL"), while v3 lists them as "Interfaces" in an 8 // endpoint's response. 9 type Availability string 10 11 const ( 12 // AvailabilityAdmin indicates that an endpoint is only available to 13 // administrators. 14 AvailabilityAdmin Availability = "admin" 15 16 // AvailabilityPublic indicates that an endpoint is available to everyone on 17 // the internet. 18 AvailabilityPublic Availability = "public" 19 20 // AvailabilityInternal indicates that an endpoint is only available within 21 // the cluster's internal network. 22 AvailabilityInternal Availability = "internal" 23 ) 24 25 // EndpointOpts specifies search criteria used by queries against an 26 // OpenStack service catalog. The options must contain enough information to 27 // unambiguously identify one, and only one, endpoint within the catalog. 28 // 29 // Usually, these are passed to service client factory functions in a provider 30 // package, like "openstack.NewComputeV2()". 31 type EndpointOpts struct { 32 // Type [required] is the service type for the client (e.g., "compute", 33 // "object-store"). Generally, this will be supplied by the service client 34 // function, but a user-given value will be honored if provided. 35 Type string 36 37 // Name [optional] is the service name for the client (e.g., "nova") as it 38 // appears in the service catalog. Services can have the same Type but a 39 // different Name, which is why both Type and Name are sometimes needed. 40 Name string 41 42 // Region [required] is the geographic region in which the endpoint resides, 43 // generally specifying which datacenter should house your resources. 44 // Required only for services that span multiple regions. 45 Region string 46 47 // Availability [optional] is the visibility of the endpoint to be returned. 48 // Valid types include the constants AvailabilityPublic, AvailabilityInternal, 49 // or AvailabilityAdmin from this package. 50 // 51 // Availability is not required, and defaults to AvailabilityPublic. Not all 52 // providers or services offer all Availability options. 53 Availability Availability 54 } 55 56 /* 57 EndpointLocator is an internal function to be used by provider implementations. 58 59 It provides an implementation that locates a single endpoint from a service 60 catalog for a specific ProviderClient based on user-provided EndpointOpts. The 61 provider then uses it to discover related ServiceClients. 62 */ 63 type EndpointLocator func(EndpointOpts) (string, error) 64 65 // ApplyDefaults is an internal method to be used by provider implementations. 66 // 67 // It sets EndpointOpts fields if not already set, including a default type. 68 // Currently, EndpointOpts.Availability defaults to the public endpoint. 69 func (eo *EndpointOpts) ApplyDefaults(t string) { 70 if eo.Type == "" { 71 eo.Type = t 72 } 73 if eo.Availability == "" { 74 eo.Availability = AvailabilityPublic 75 } 76 }