mirror of
https://github.com/kemko/nomad.git
synced 2026-01-12 13:25:42 +03:00
This PR switches the Nomad repository from using govendor to Go modules for managing dependencies. Aspects of the Nomad workflow remain pretty much the same. The usual Makefile targets should continue to work as they always did. The API submodule simply defers to the parent Nomad version on the repository, keeping the semantics of API versioning that currently exists.
77 lines
3.0 KiB
Go
77 lines
3.0 KiB
Go
package gophercloud
|
|
|
|
// Availability indicates to whom a specific service endpoint is accessible:
|
|
// the internet at large, internal networks only, or only to administrators.
|
|
// Different identity services use different terminology for these. Identity v2
|
|
// lists them as different kinds of URLs within the service catalog ("adminURL",
|
|
// "internalURL", and "publicURL"), while v3 lists them as "Interfaces" in an
|
|
// endpoint's response.
|
|
type Availability string
|
|
|
|
const (
|
|
// AvailabilityAdmin indicates that an endpoint is only available to
|
|
// administrators.
|
|
AvailabilityAdmin Availability = "admin"
|
|
|
|
// AvailabilityPublic indicates that an endpoint is available to everyone on
|
|
// the internet.
|
|
AvailabilityPublic Availability = "public"
|
|
|
|
// AvailabilityInternal indicates that an endpoint is only available within
|
|
// the cluster's internal network.
|
|
AvailabilityInternal Availability = "internal"
|
|
)
|
|
|
|
// EndpointOpts specifies search criteria used by queries against an
|
|
// OpenStack service catalog. The options must contain enough information to
|
|
// unambiguously identify one, and only one, endpoint within the catalog.
|
|
//
|
|
// Usually, these are passed to service client factory functions in a provider
|
|
// package, like "openstack.NewComputeV2()".
|
|
type EndpointOpts struct {
|
|
// Type [required] is the service type for the client (e.g., "compute",
|
|
// "object-store"). Generally, this will be supplied by the service client
|
|
// function, but a user-given value will be honored if provided.
|
|
Type string
|
|
|
|
// Name [optional] is the service name for the client (e.g., "nova") as it
|
|
// appears in the service catalog. Services can have the same Type but a
|
|
// different Name, which is why both Type and Name are sometimes needed.
|
|
Name string
|
|
|
|
// Region [required] is the geographic region in which the endpoint resides,
|
|
// generally specifying which datacenter should house your resources.
|
|
// Required only for services that span multiple regions.
|
|
Region string
|
|
|
|
// Availability [optional] is the visibility of the endpoint to be returned.
|
|
// Valid types include the constants AvailabilityPublic, AvailabilityInternal,
|
|
// or AvailabilityAdmin from this package.
|
|
//
|
|
// Availability is not required, and defaults to AvailabilityPublic. Not all
|
|
// providers or services offer all Availability options.
|
|
Availability Availability
|
|
}
|
|
|
|
/*
|
|
EndpointLocator is an internal function to be used by provider implementations.
|
|
|
|
It provides an implementation that locates a single endpoint from a service
|
|
catalog for a specific ProviderClient based on user-provided EndpointOpts. The
|
|
provider then uses it to discover related ServiceClients.
|
|
*/
|
|
type EndpointLocator func(EndpointOpts) (string, error)
|
|
|
|
// ApplyDefaults is an internal method to be used by provider implementations.
|
|
//
|
|
// It sets EndpointOpts fields if not already set, including a default type.
|
|
// Currently, EndpointOpts.Availability defaults to the public endpoint.
|
|
func (eo *EndpointOpts) ApplyDefaults(t string) {
|
|
if eo.Type == "" {
|
|
eo.Type = t
|
|
}
|
|
if eo.Availability == "" {
|
|
eo.Availability = AvailabilityPublic
|
|
}
|
|
}
|