13
func (l *Legacy) Auth(creds *Credentials) (*AuthDetails, error) {
15
l.client = http.DefaultClient
17
request, err := http.NewRequest("GET", creds.URL, nil)
21
request.Header.Set("X-Auth-User", creds.User)
22
request.Header.Set("X-Auth-Key", creds.Secrets)
23
response, err := l.client.Do(request)
24
defer response.Body.Close()
28
if response.StatusCode != http.StatusNoContent {
29
content, _ := ioutil.ReadAll(response.Body)
30
return nil, fmt.Errorf("Failed to Authenticate (code %d %s): %s",
31
response.StatusCode, response.Status, content)
33
details := &AuthDetails{}
34
details.Token = response.Header.Get("X-Auth-Token")
35
if details.Token == "" {
36
return nil, fmt.Errorf("Did not get valid Token from auth request")
38
details.RegionServiceURLs = make(map[string]ServiceURLs)
39
serviceURLs := make(ServiceURLs)
40
// Legacy authentication doesn't require a region so use "".
41
details.RegionServiceURLs[""] = serviceURLs
42
nova_url := response.Header.Get("X-Server-Management-Url")
44
return nil, fmt.Errorf("Did not get valid nova management URL from auth request")
46
serviceURLs["compute"] = nova_url
48
swift_url := response.Header.Get("X-Storage-Url")
50
return nil, fmt.Errorf("Did not get valid swift management URL from auth request")
52
serviceURLs["object-store"] = swift_url