func()

in pkg/providers/az-client.go [97:128]


func (az *AzClient) ListTenants(ctx context.Context) ([]armsubscription.TenantIDDescription, error) {
	log.Debug("Starting to list Azure Tenants")

	// Initialize the tenant slice to store the results.
	tenants := make([]armsubscription.TenantIDDescription, 0)

	if az.TenantClient == nil {
		c, err := armsubscription.NewTenantsClient(az.Credential, nil)
		if err != nil {
			return nil, fmt.Errorf("failed to create tenant client: %w", err)
		}
		az.TenantClient = c
	}
	pager := az.TenantClient.NewListPager(nil)

	for pager.More() {
		page, err := pager.NextPage(ctx)
		if err != nil {
			return nil, fmt.Errorf("listing tenants page: %w", err)
		}

		for _, t := range page.Value {
			if t == nil {
				return nil, errors.New("nil tenant") // this should never happen but it's good to check just in case
			}
			tenants = append(tenants, *t)
		}
	}

	log.Debugf("Successfully listed %d Azure tenants", len(tenants))
	return tenants, nil
}