minor updates

This commit is contained in:
Qiu Jian
2018-08-22 16:11:18 +08:00
parent 80571f480f
commit b77f39d194
3 changed files with 27 additions and 22 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
REPO_PREFIX := yunion.io/x/onecloud
VENDOR_PATH := $(REPO_PREFIX)/vendor
VERSION_PKG := $(VENDOR_PATH)/yunion.io/x/pkg/util/version
ROOT_DIR := $(shell pwd -P)
ROOT_DIR := $(CURDIR)
BUILD_DIR := $(ROOT_DIR)/_output
BIN_DIR := $(BUILD_DIR)/bin
BUILD_SCRIPT := $(ROOT_DIR)/build/build.sh
+17 -12
View File
@@ -5,28 +5,32 @@ import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"strings"
"time"
prompt "github.com/c-bata/go-prompt"
"yunion.io/x/log"
"yunion.io/x/pkg/util/version"
"yunion.io/x/structarg"
"yunion.io/x/onecloud/cmd/climc/promputils"
"yunion.io/x/onecloud/cmd/climc/shell"
_ "yunion.io/x/onecloud/cmd/climc/shell/k8s"
"yunion.io/x/onecloud/pkg/mcclient"
_ "yunion.io/x/onecloud/cmd/climc/shell/k8s"
)
type BaseOptions struct {
Help bool `help:"Show help" short-token:"h"`
Debug bool `help:"Show debug information"`
Version bool `help:"Show version"`
Timeout int `default:"600" help:"Number of seconds to wait for a response"`
Insecure bool `default:"False" help:"Allow skip server cert verification if URL is https" short-token:"k"`
OsUsername string `default:"$OS_USERNAME" help:"Username, defaults to env[OS_USERNAME]"`
OsPassword string `default:"$OS_PASSWORD" help:"Password, defaults to env[OS_PASSWORD]"`
Help bool `help:"Show help" short-token:"h"`
Debug bool `help:"Show debug information"`
Version bool `help:"Show version"`
Timeout int `default:"600" help:"Number of seconds to wait for a response"`
Insecure bool `default:"false" help:"Allow skip server cert verification if URL is https" short-token:"k"`
NoCachedToken bool `default:"false" help:"Force not use cached token"`
OsUsername string `default:"$OS_USERNAME" help:"Username, defaults to env[OS_USERNAME]"`
OsPassword string `default:"$OS_PASSWORD" help:"Password, defaults to env[OS_PASSWORD]"`
// OsProjectId string `default:"$OS_PROJECT_ID" help:"Proejct ID, defaults to env[OS_PROJECT_ID]"`
OsProjectName string `default:"$OS_PROJECT_NAME" help:"Project name, defaults to env[OS_PROJECT_NAME]"`
OsDomainName string `default:"$OS_DOMAIN_NAME" help:"Domain name, defaults to env[OS_DOMAIN_NAME]"`
@@ -122,8 +126,9 @@ func newClientSession(options *BaseOptions) (*mcclient.ClientSession, error) {
options.Insecure)
var cacheToken mcclient.TokenCredential
cacheFile, err := os.Open("/tmp/OS_AUTH_CACHE_TOKEN")
if err == nil && cacheFile != nil {
tokenCachePath := filepath.Join(os.TempDir(), "OS_AUTH_CACHE_TOKEN")
cacheFile, err := os.Open(tokenCachePath)
if err == nil && cacheFile != nil && !options.NoCachedToken {
fileInfo, _ := cacheFile.Stat()
dur, err := time.ParseDuration("-24h")
if fileInfo != nil && err == nil && fileInfo.ModTime().After(time.Now().Add(dur)) {
@@ -153,12 +158,12 @@ func newClientSession(options *BaseOptions) (*mcclient.ClientSession, error) {
if err != nil {
fmt.Printf("Marshal token error:%s", err)
} else {
fo, _ := os.Create("/tmp/OS_AUTH_CACHE_TOKEN")
fo, _ := os.Create(tokenCachePath)
fo.Write(bytesCacheToken)
fo.Close()
}
} else {
fmt.Println("******** Use Token Cache At /tmp/OS_AUTH_CACHE_TOKEN ********")
fmt.Printf("******** Use Token Cache At %s ********\n", tokenCachePath)
}
session := client.NewSession(options.OsRegionName,
+9 -9
View File
@@ -250,15 +250,15 @@ func Id2RegionZone(id string) (string, string) {
}
}
func (catalog KeystoneServiceCatalogV3) GetServiceURLs(service, region, zone, endpointType string) ([]string, error) {
url, err := catalog.GetServiceURL(service, region, zone, endpointType)
func (catalog KeystoneServiceCatalogV3) GetServiceURL(service, region, zone, endpointType string) (string, error) {
urls, err := catalog.GetServiceURLs(service, region, zone, endpointType)
if err != nil {
return nil, err
return "", err
}
return []string{url}, nil
return urls[rand.Intn(len(urls))], nil
}
func (catalog KeystoneServiceCatalogV3) GetServiceURL(service, region, zone, endpointType string) (string, error) {
func (catalog KeystoneServiceCatalogV3) GetServiceURLs(service, region, zone, endpointType string) ([]string, error) {
if endpointType == "" {
endpointType = "internalURL"
}
@@ -289,7 +289,7 @@ func (catalog KeystoneServiceCatalogV3) GetServiceURL(service, region, zone, end
break
}
} else {
return "", fmt.Errorf("No default region")
return nil, fmt.Errorf("No default region")
}
} else {
_, ok := regeps[regionzone]
@@ -298,14 +298,14 @@ func (catalog KeystoneServiceCatalogV3) GetServiceURL(service, region, zone, end
} else {
selected, ok = regeps[region]
if !ok {
return "", fmt.Errorf("No valid %s endpoints for %s in region %s", endpointType, service, RegionID(region, zone))
return nil, fmt.Errorf("No valid %s endpoints for %s in region %s", endpointType, service, RegionID(region, zone))
}
}
}
return selected[rand.Intn(len(selected))], nil
return selected, nil
}
}
return "", fmt.Errorf("No such service %s", service)
return nil, fmt.Errorf("No such service %s", service)
}
func (self *TokenCredentialV3) String() string {