// 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() }