func()

in server/internal/server/ListResourceGroups.go [16:49]


func (s *Server) ListResourceGroups(ctx context.Context, in *emptypb.Empty) (*pb.ListResourceGroupResponse, error) {
	logger := ctxlogger.GetLogger(ctx)
	if s.ResourceGroupClient == nil {
		logger.Error("ResourceGroupClient is nil in ListResourceGroups(), azuresdk feature is likely disabled")
		return nil, status.Errorf(codes.Unimplemented, "ResourceGroupClient is nil in ListResourceGroups(), azuresdk feature is likely disabled")
	}
	// creating a pager that is used to iterate over collection of resourceGroups'
	// Pass in nil to options parameter of NewListPager to get default pager
	pager := s.ResourceGroupClient.NewListPager(nil)
	var resourceGroups []*armresources.ResourceGroup
	var resourceGroupList []*pb.ResourceGroup
	for pager.More() {
		resp, err := pager.NextPage(ctx)
		if err != nil {
			logger.Error("NextPage() error: " + err.Error())
			return nil, HandleError(err, "NextPage()")
		}
		if resp.Value != nil {
			resourceGroups = append(resourceGroups, resp.Value...)
		}
	}

	logger.Info("Resource groups found: " + strconv.Itoa(len(resourceGroups)))

	for _, rg := range resourceGroups {
		resourceGroup := &pb.ResourceGroup{
			Id:       *rg.ID,
			Name:     *rg.Name,
			Location: *rg.Location,
		}
		resourceGroupList = append(resourceGroupList, resourceGroup)
	}
	return &pb.ListResourceGroupResponse{RgList: resourceGroupList}, nil
}