func List()

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
}