in internal/meta/meta_rg.go [93:154]
func (meta MetaResourceGroup) queryResourceSet(ctx context.Context, rg string) (*resourceset.AzureResourceSet, error) {
var rl []resourceset.AzureResource
// Try to get the resource group (with any extension resources) first, in case it doesn't exist.
opt := azlist.Option{
Logger: meta.logger.WithGroup("azlist"),
SubscriptionId: meta.subscriptionId,
Cred: meta.azureSDKCred,
ClientOpt: meta.azureSDKClientOpt,
Parallelism: meta.parallelism,
ExtensionResourceTypes: extBuilder{includeRoleAssignment: meta.includeRoleAssignment}.Build(),
ARGTable: "ResourceContainers",
}
lister, err := azlist.NewLister(opt)
if err != nil {
return nil, fmt.Errorf("building azlister for listing resource group only: %v", err)
}
result, err := lister.List(ctx, fmt.Sprintf("name == %q", rg))
if err != nil {
return nil, fmt.Errorf("listing resource group only: %w", err)
}
for _, res := range result.Resources {
res := resourceset.AzureResource{
Id: res.Id,
Properties: res.Properties,
}
rl = append(rl, res)
}
// Skip the resource listing if the resource group itself doesn't exist.
if len(result.Resources) == 0 {
return &resourceset.AzureResourceSet{}, nil
}
// List the resources within the resource group.
opt = azlist.Option{
Logger: meta.logger.WithGroup("azlist"),
SubscriptionId: meta.subscriptionId,
Cred: meta.azureSDKCred,
ClientOpt: meta.azureSDKClientOpt,
Parallelism: meta.parallelism,
ExtensionResourceTypes: extBuilder{includeRoleAssignment: meta.includeRoleAssignment}.Build(),
Recursive: true,
}
lister, err = azlist.NewLister(opt)
if err != nil {
return nil, fmt.Errorf("building azlister for listing resource group: %v", err)
}
result, err = lister.List(ctx, fmt.Sprintf("resourceGroup =~ %q", rg))
if err != nil {
return nil, fmt.Errorf("listing resource group: %w", err)
}
for _, res := range result.Resources {
res := resourceset.AzureResource{
Id: res.Id,
Properties: res.Properties,
}
rl = append(rl, res)
}
return &resourceset.AzureResourceSet{Resources: rl}, nil
}