1 Star 0 Fork 0

zhuchance / kubernetes

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
service_catalog.go 2.24 KB
一键复制 编辑 原始数据 按行查看 历史
package gophercloud
import (
"os"
"strings"
)
// ApiCriteria provides one or more criteria for the SDK to look for appropriate endpoints.
// Fields left unspecified or otherwise set to their zero-values are assumed to not be
// relevant, and do not participate in the endpoint search.
//
// Name specifies the desired service catalog entry name.
// Type specifies the desired service catalog entry type.
// Region specifies the desired endpoint region.
// If unset, Gophercloud will try to use the region set in the
// OS_REGION_NAME environment variable. If that's not set,
// region comparison will not occur. If OS_REGION_NAME is set
// and IgnoreEnvVars is also set, OS_REGION_NAME will be ignored.
// VersionId specifies the desired version of the endpoint.
// Note that this field is matched exactly, and is (at present)
// opaque to Gophercloud. Thus, requesting a version 2
// endpoint will _not_ match a version 3 endpoint.
// The UrlChoice field inidicates whether or not gophercloud
// should use the public or internal endpoint URL if a
// candidate endpoint is found.
// IgnoreEnvVars instructs Gophercloud to ignore helpful environment variables.
type ApiCriteria struct {
Name string
Type string
Region string
VersionId string
UrlChoice int
IgnoreEnvVars bool
}
// The choices available for UrlChoice. See the ApiCriteria structure for details.
const (
PublicURL = iota
InternalURL
)
// Given a set of criteria to match on, locate the first candidate endpoint
// in the provided service catalog.
//
// If nothing found, the result will be a zero-valued EntryEndpoint (all URLs
// set to "").
func FindFirstEndpointByCriteria(entries []CatalogEntry, ac ApiCriteria) EntryEndpoint {
rgn := strings.ToUpper(ac.Region)
if (rgn == "") && !ac.IgnoreEnvVars {
rgn = os.Getenv("OS_REGION_NAME")
}
for _, entry := range entries {
if (ac.Name != "") && (ac.Name != entry.Name) {
continue
}
if (ac.Type != "") && (ac.Type != entry.Type) {
continue
}
for _, endpoint := range entry.Endpoints {
if (rgn != "") && (rgn != strings.ToUpper(endpoint.Region)) {
continue
}
if (ac.VersionId != "") && (ac.VersionId != endpoint.VersionId) {
continue
}
return endpoint
}
}
return EntryEndpoint{}
}
Go
1
https://gitee.com/meoom/kubernetes.git
git@gitee.com:meoom/kubernetes.git
meoom
kubernetes
kubernetes
v0.5.1

搜索帮助