Add support for Openstack Identity v3 API
Signed-off-by: Li Wenquan <wenquan.li@hp.com>master
							parent
							
								
									3f9e7ed169
								
							
						
					
					
						commit
						062d6266cf
					
				| 
						 | 
				
			
			@ -10,6 +10,7 @@ package swift
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"crypto/tls"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
| 
						 | 
				
			
			@ -40,14 +41,18 @@ const directoryMimeType = "application/directory"
 | 
			
		|||
 | 
			
		||||
//DriverParameters A struct that encapsulates all of the driver parameters after all values have been set
 | 
			
		||||
type DriverParameters struct {
 | 
			
		||||
	Username  string
 | 
			
		||||
	Password  string
 | 
			
		||||
	AuthURL   string
 | 
			
		||||
	Tenant    string
 | 
			
		||||
	Region    string
 | 
			
		||||
	Container string
 | 
			
		||||
	Prefix    string
 | 
			
		||||
	ChunkSize int
 | 
			
		||||
	Username           string
 | 
			
		||||
	Password           string
 | 
			
		||||
	AuthURL            string
 | 
			
		||||
	Tenant             string
 | 
			
		||||
	TenantID           string
 | 
			
		||||
	Domain             string
 | 
			
		||||
	DomainID           string
 | 
			
		||||
	Region             string
 | 
			
		||||
	Container          string
 | 
			
		||||
	Prefix             string
 | 
			
		||||
	InsecureSkipVerify bool
 | 
			
		||||
	ChunkSize          int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type swiftInfo map[string]interface{}
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +94,8 @@ type Driver struct {
 | 
			
		|||
// - container
 | 
			
		||||
func FromParameters(parameters map[string]interface{}) (*Driver, error) {
 | 
			
		||||
	params := DriverParameters{
 | 
			
		||||
		ChunkSize: defaultChunkSize,
 | 
			
		||||
		ChunkSize:          defaultChunkSize,
 | 
			
		||||
		InsecureSkipVerify: false,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := mapstructure.Decode(parameters, ¶ms); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -121,6 +127,12 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
 | 
			
		|||
 | 
			
		||||
// New constructs a new Driver with the given Openstack Swift credentials and container name
 | 
			
		||||
func New(params DriverParameters) (*Driver, error) {
 | 
			
		||||
	transport := &http.Transport{
 | 
			
		||||
		Proxy:               http.ProxyFromEnvironment,
 | 
			
		||||
		MaxIdleConnsPerHost: 2048,
 | 
			
		||||
		TLSClientConfig:     &tls.Config{InsecureSkipVerify: params.InsecureSkipVerify},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ct := swift.Connection{
 | 
			
		||||
		UserName:       params.Username,
 | 
			
		||||
		ApiKey:         params.Password,
 | 
			
		||||
| 
						 | 
				
			
			@ -128,6 +140,10 @@ func New(params DriverParameters) (*Driver, error) {
 | 
			
		|||
		Region:         params.Region,
 | 
			
		||||
		UserAgent:      "distribution",
 | 
			
		||||
		Tenant:         params.Tenant,
 | 
			
		||||
		TenantId:       params.TenantID,
 | 
			
		||||
		Domain:         params.Domain,
 | 
			
		||||
		DomainId:       params.DomainID,
 | 
			
		||||
		Transport:      transport,
 | 
			
		||||
		ConnectTimeout: 60 * time.Second,
 | 
			
		||||
		Timeout:        15 * 60 * time.Second,
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@ package swift
 | 
			
		|||
import (
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"github.com/ncw/swift/swifttest"
 | 
			
		||||
| 
						 | 
				
			
			@ -21,15 +22,19 @@ type SwiftDriverConstructor func(rootDirectory string) (*Driver, error)
 | 
			
		|||
 | 
			
		||||
func init() {
 | 
			
		||||
	var (
 | 
			
		||||
		username    string
 | 
			
		||||
		password    string
 | 
			
		||||
		authURL     string
 | 
			
		||||
		tenant      string
 | 
			
		||||
		container   string
 | 
			
		||||
		region      string
 | 
			
		||||
		prefix      string
 | 
			
		||||
		swiftServer *swifttest.SwiftServer
 | 
			
		||||
		err         error
 | 
			
		||||
		username           string
 | 
			
		||||
		password           string
 | 
			
		||||
		authURL            string
 | 
			
		||||
		tenant             string
 | 
			
		||||
		tenantID           string
 | 
			
		||||
		domain             string
 | 
			
		||||
		domainID           string
 | 
			
		||||
		container          string
 | 
			
		||||
		region             string
 | 
			
		||||
		prefix             string
 | 
			
		||||
		insecureSkipVerify bool
 | 
			
		||||
		swiftServer        *swifttest.SwiftServer
 | 
			
		||||
		err                error
 | 
			
		||||
	)
 | 
			
		||||
	if username = os.Getenv("OS_USERNAME"); username == "" {
 | 
			
		||||
		username = os.Getenv("ST_USER")
 | 
			
		||||
| 
						 | 
				
			
			@ -41,9 +46,13 @@ func init() {
 | 
			
		|||
		authURL = os.Getenv("ST_AUTH")
 | 
			
		||||
	}
 | 
			
		||||
	tenant = os.Getenv("OS_TENANT_NAME")
 | 
			
		||||
	tenantID = os.Getenv("OS_TENANT_ID")
 | 
			
		||||
	domain = os.Getenv("OS_DOMAIN_NAME")
 | 
			
		||||
	domainID = os.Getenv("OS_DOMAIN_ID")
 | 
			
		||||
	container = os.Getenv("OS_CONTAINER_NAME")
 | 
			
		||||
	region = os.Getenv("OS_REGION_NAME")
 | 
			
		||||
	prefix = os.Getenv("OS_CONTAINER_PREFIX")
 | 
			
		||||
	insecureSkipVerify, _ = strconv.ParseBool(os.Getenv("ST_INSECURESKIPVERIFY"))
 | 
			
		||||
 | 
			
		||||
	if username == "" || password == "" || authURL == "" || container == "" {
 | 
			
		||||
		if swiftServer, err = swifttest.NewSwiftServer("localhost"); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -67,9 +76,13 @@ func init() {
 | 
			
		|||
			password,
 | 
			
		||||
			authURL,
 | 
			
		||||
			tenant,
 | 
			
		||||
			tenantID,
 | 
			
		||||
			domain,
 | 
			
		||||
			domainID,
 | 
			
		||||
			region,
 | 
			
		||||
			container,
 | 
			
		||||
			prefix,
 | 
			
		||||
			insecureSkipVerify,
 | 
			
		||||
			defaultChunkSize,
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue