func parseOAuthToken(cred cloud.Credential) (string, error) { oauth := cred.Attributes()[credAttrMAASOAuth] if strings.Count(oauth, ":") != 2 { return "", errMalformedMaasOAuth } return oauth, nil }
// updateCloudCredentialOp returns a txn.Op that will update // a cloud credential. func updateCloudCredentialOp(tag names.CloudCredentialTag, cred cloud.Credential) txn.Op { return txn.Op{ C: cloudCredentialsC, Id: cloudCredentialDocID(tag), Assert: txn.DocExists, Update: bson.D{{"$set", bson.D{ {"auth-type", string(cred.AuthType())}, {"attributes", cred.Attributes()}, {"revoked", cred.Revoked}, }}}, } }
// createCloudCredentialOp returns a txn.Op that will create // a cloud credential. func createCloudCredentialOp(tag names.CloudCredentialTag, cred cloud.Credential) txn.Op { return txn.Op{ C: cloudCredentialsC, Id: cloudCredentialDocID(tag), Assert: txn.DocMissing, Insert: &cloudCredentialDoc{ Owner: tag.Owner().Id(), Cloud: tag.Cloud().Id(), Name: tag.Name(), AuthType: string(cred.AuthType()), Attributes: cred.Attributes(), Revoked: cred.Revoked, }, } }
// UpdateCredential updates a cloud credentials. func (c *Client) UpdateCredential(tag names.CloudCredentialTag, credential jujucloud.Credential) error { var results params.ErrorResults args := params.UpdateCloudCredentials{ Credentials: []params.UpdateCloudCredential{{ Tag: tag.String(), Credential: params.CloudCredential{ AuthType: string(credential.AuthType()), Attributes: credential.Attributes(), }, }}, } if err := c.facade.FacadeCall("UpdateCredentials", args, &results); err != nil { return errors.Trace(err) } return results.OneError() }
func (c OpenstackCredentials) detectCredential() (*cloud.Credential, string, string, error) { creds := identity.CredentialsFromEnv() if creds.TenantName == "" { return nil, "", "", errors.NewNotFound(nil, "OS_TENANT_NAME environment variable not set") } if creds.User == "" { return nil, "", "", errors.NewNotFound(nil, "neither OS_USERNAME nor OS_ACCESS_KEY environment variable not set") } if creds.Secrets == "" { return nil, "", "", errors.NewNotFound(nil, "neither OS_PASSWORD nor OS_SECRET_KEY environment variable not set") } user, err := utils.LocalUsername() if err != nil { return nil, "", "", errors.Trace(err) } // If OS_USERNAME or NOVA_USERNAME is set, assume userpass. var credential cloud.Credential if os.Getenv("OS_USERNAME") != "" || os.Getenv("NOVA_USERNAME") != "" { user = creds.User credential = cloud.NewCredential( cloud.UserPassAuthType, map[string]string{ credAttrUserName: creds.User, credAttrPassword: creds.Secrets, credAttrTenantName: creds.TenantName, credAttrDomainName: creds.DomainName, }, ) } else { credential = cloud.NewCredential( cloud.AccessKeyAuthType, map[string]string{ credAttrAccessKey: creds.User, credAttrSecretKey: creds.Secrets, credAttrTenantName: creds.TenantName, }, ) } region := creds.Region if region == "" { region = "<unspecified>" } credential.Label = fmt.Sprintf("openstack region %q project %q user %q", region, creds.TenantName, user) return &credential, user, creds.Region, nil }