github.com/gophercloud/gophercloud@v1.11.0/openstack/baremetalintrospection/httpbasic/requests.go (about) 1 package httpbasic 2 3 import ( 4 "encoding/base64" 5 "fmt" 6 7 "github.com/gophercloud/gophercloud" 8 ) 9 10 // EndpointOpts specifies a "http_basic" Ironic Inspector Endpoint. 11 type EndpointOpts struct { 12 IronicInspectorEndpoint string 13 IronicInspectorUser string 14 IronicInspectorUserPassword string 15 } 16 17 func initClientOpts(client *gophercloud.ProviderClient, eo EndpointOpts) (*gophercloud.ServiceClient, error) { 18 sc := new(gophercloud.ServiceClient) 19 if eo.IronicInspectorEndpoint == "" { 20 return nil, fmt.Errorf("IronicInspectorEndpoint is required") 21 } 22 if eo.IronicInspectorUser == "" || eo.IronicInspectorUserPassword == "" { 23 return nil, fmt.Errorf("User and Password are required") 24 } 25 26 token := []byte(eo.IronicInspectorUser + ":" + eo.IronicInspectorUserPassword) 27 encodedToken := base64.StdEncoding.EncodeToString(token) 28 sc.MoreHeaders = map[string]string{"Authorization": "Basic " + encodedToken} 29 sc.Endpoint = gophercloud.NormalizeURL(eo.IronicInspectorEndpoint) 30 sc.ProviderClient = client 31 return sc, nil 32 } 33 34 // NewBareMetalIntrospectionHTTPBasic creates a ServiceClient that may be used to access a 35 // "http_basic" bare metal introspection service. 36 func NewBareMetalIntrospectionHTTPBasic(eo EndpointOpts) (*gophercloud.ServiceClient, error) { 37 sc, err := initClientOpts(&gophercloud.ProviderClient{}, eo) 38 if err != nil { 39 return nil, err 40 } 41 42 sc.Type = "baremetal-introspection" 43 44 return sc, nil 45 }