Skip to content

Commit d65d80f

Browse files
authored
feat: Add instance_view to azure_compute_virtual_machines table (#5941)
apparently `az vm list` always returns instance_views column as empty so to get that data we need additional call.
1 parent 9586d36 commit d65d80f

File tree

12 files changed

+83
-28
lines changed

12 files changed

+83
-28
lines changed

plugins/source/azure/codegen0/internal/azparser/parser.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ var newFuncToSkipPerPackage = map[string]map[string]bool{
3333
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/sql/armsql": {
3434
"NewDeletedServersClient": true,
3535
},
36+
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute": {
37+
// we migrated this to manual written client as it has childs
38+
"NewVirtualMachinesClient": true,
39+
},
3640
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos": {
3741
"NewDatabaseAccountsClient": true,
3842
},

plugins/source/azure/codegen1/recipes/compute.go

Lines changed: 0 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/source/azure/codegen2/main.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ func initTable(parent *recipes.Table, r *recipes.Table) error {
145145
if r.Relations != nil {
146146
for _, relation := range r.Relations {
147147
r.Table.Relations = append(r.Table.Relations, relation.Name+"()")
148-
initTable(r, relation)
148+
if err := initTable(r, relation); err != nil {
149+
return err
150+
}
149151
}
150152
}
151153
return nil
@@ -162,7 +164,7 @@ func generateTable(parent *recipes.Table, r *recipes.Table) error {
162164
}
163165
var buff bytes.Buffer
164166
if err := tpl.Execute(&buff, r); err != nil {
165-
return fmt.Errorf("failed to execute template for %s: %w", r.Table.Name, err)
167+
return fmt.Errorf("failed to execute template for %w", err)
166168
}
167169

168170
filePath := path.Join(currentDir, "../resources/services", r.PackageName)

plugins/source/azure/codegen2/recipes/compute.go

Lines changed: 0 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/source/azure/codegen2/recipes/compute_e.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,26 @@ func init() {
2626
},
2727
},
2828
},
29+
{
30+
Service: "armcompute",
31+
Name: "virtual_machines",
32+
Struct: &armcompute.VirtualMachine{},
33+
ResponseStruct: &armcompute.VirtualMachinesClientListAllResponse{},
34+
Client: &armcompute.VirtualMachinesClient{},
35+
ListFunc: (&armcompute.VirtualMachinesClient{}).NewListAllPager,
36+
NewFunc: armcompute.NewVirtualMachinesClient,
37+
URL: "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines",
38+
Multiplex: `client.SubscriptionMultiplexRegisteredNamespace(client.Namespacemicrosoft_compute)`,
39+
SkipMock: true,
40+
ExtraColumns: []codegen.ColumnDefinition{
41+
SubscriptionIdColumn,
42+
{
43+
Name: "instance_view",
44+
Type: schema.TypeJSON,
45+
Resolver: `getInstanceView`,
46+
},
47+
},
48+
},
2949
}
3050
Tables = append(Tables, tables...)
3151
}

plugins/source/azure/docs/tables/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@
5353
- [azure_compute_restore_point_collections](azure_compute_restore_point_collections.md)
5454
- [azure_compute_snapshots](azure_compute_snapshots.md)
5555
- [azure_compute_virtual_machine_scale_sets](azure_compute_virtual_machine_scale_sets.md)
56-
- [azure_compute_virtual_machines](azure_compute_virtual_machines.md)
5756
- [azure_compute_skus](azure_compute_skus.md)
57+
- [azure_compute_virtual_machines](azure_compute_virtual_machines.md)
5858
- [azure_confluent_marketplace_agreements](azure_confluent_marketplace_agreements.md)
5959
- [azure_connectedvmware_clusters](azure_connectedvmware_clusters.md)
6060
- [azure_connectedvmware_datastores](azure_connectedvmware_datastores.md)

plugins/source/azure/docs/tables/azure_compute_virtual_machines.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ The primary key for this table is **id**.
1111
|_cq_id|UUID|
1212
|_cq_parent_id|UUID|
1313
|subscription_id|String|
14+
|instance_view|JSON|
1415
|location|String|
1516
|extended_location|JSON|
1617
|identity|JSON|

plugins/source/azure/resources/plugin/tables.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package compute
2+
3+
import (
4+
"context"
5+
6+
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
7+
"github.com/cloudquery/cloudquery/plugins/source/azure/client"
8+
"github.com/cloudquery/plugin-sdk/schema"
9+
)
10+
11+
func getInstanceView(ctx context.Context, meta schema.ClientMeta, resource *schema.Resource, c schema.Column) error {
12+
cl := meta.(*client.Client)
13+
svc, err := armcompute.NewVirtualMachinesClient(cl.SubscriptionId, cl.Creds, cl.Options)
14+
if err != nil {
15+
return err
16+
}
17+
item := resource.Item.(*armcompute.VirtualMachine)
18+
group, err := client.ParseResourceGroup(*item.ID)
19+
if err != nil {
20+
return err
21+
}
22+
instanceView, err := svc.InstanceView(ctx, group, *item.Name, nil)
23+
if err != nil {
24+
return err
25+
}
26+
return resource.Set(c.Name, instanceView.VirtualMachineInstanceView)
27+
}

plugins/source/azure/resources/services/compute/virtual_machines.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)