func()

in pkg/providers/az-client.go [67:95]


func (az *AzClient) ListResourceGroups(ctx context.Context, subscriptionID string) ([]armresources.ResourceGroup, error) {
	log.Debug("listing Azure resource groups for subscription ", subscriptionID)
	if az.ResourceGroupClient == nil {
		c, err := armresources.NewResourceGroupsClient(subscriptionID, az.Credential, nil)
		if err != nil {
			return nil, fmt.Errorf("failed to create resource group client: %w", err)
		}
		az.ResourceGroupClient = c
	}

	var rgs []armresources.ResourceGroup
	pager := az.ResourceGroupClient.NewListPager(nil)
	for pager.More() {
		page, err := pager.NextPage(ctx)
		if err != nil {
			return nil, fmt.Errorf("listing resource groups page: %w", err)
		}

		for _, rg := range page.Value {
			if rg == nil {
				return nil, errors.New("nil rg")
			}

			rgs = append(rgs, *rg)
		}
	}

	return rgs, nil
}