in cfn-resources/database-user/cmd/resource/resource.go [338:405]
func List(req handler.Request, prevModel *Model, currentModel *Model) (handler.ProgressEvent, error) {
setup()
client, err := util.CreateMongoDBClient(*currentModel.ApiKeys.PublicKey, *currentModel.ApiKeys.PrivateKey)
if err != nil {
return handler.ProgressEvent{
OperationStatus: handler.Failed,
Message: err.Error(),
HandlerErrorCode: cloudformation.HandlerErrorCodeInvalidRequest}, nil
}
groupID := *currentModel.ProjectId
dbUserModels := []interface{}{}
databaseUsers, _, err := client.DatabaseUsers.List(context.Background(), groupID, nil)
if err != nil {
log.Debugf("error fetching database users groupId%s, error: %s", groupID, err)
return handler.ProgressEvent{
Message: err.Error(),
OperationStatus: handler.Failed,
HandlerErrorCode: cloudformation.HandlerErrorCodeServiceInternalError}, nil
}
for i, _ := range databaseUsers {
var model Model
databaseUser := databaseUsers[i]
model.DatabaseName = &databaseUser.DatabaseName
model.LdapAuthType = &databaseUser.LDAPAuthType
model.Username = &databaseUser.Username
var roles []RoleDefinition
for i, _ := range databaseUser.Roles {
r := databaseUser.Roles[i]
role := RoleDefinition{
CollectionName: &r.CollectionName,
DatabaseName: &r.DatabaseName,
RoleName: &r.RoleName,
}
roles = append(roles, role)
}
model.Roles = roles
var labels []LabelDefinition
for i, _ := range databaseUser.Labels {
l := databaseUser.Labels[i]
label := LabelDefinition{
Key: &l.Key,
Value: &l.Value,
}
labels = append(labels, label)
}
model.Labels = labels
cfnid := fmt.Sprintf("%s-%s", databaseUser.Username, databaseUser.GroupID)
model.UserCFNIdentifier = &cfnid
dbUserModels = append(dbUserModels, model)
}
return handler.ProgressEvent{
OperationStatus: handler.Success,
Message: "List Complete",
ResourceModels: dbUserModels,
}, nil
}