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
}