Skip to content

Commit 94d43b3

Browse files
authored
fix: Don't multiplex subscriptions (#2018)
#### Summary Fixes #1947 We shouldn't be multiplexing subscriptions as the API returns all subscriptions. So we were basically getting all subscriptions for each subscription, and then using the client subscription id to set the value in the DB. Since we use `ID` as the primary key and do an upsert (at least in v2), the last operation is the one that "took". ~~I think this also means subscription locations should not be multiplexed either and be a relation of subscriptions. Most of the changes are to support relations in the new SDK list pager API.~~ Removed the relations stuff to simplify things ~~Still a draft as needs some cleanup, which I'll do next week~~ Done ---
1 parent 2e09a9e commit 94d43b3

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

plugins/source/azure/codegen/recipes/base.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ type resourceDefinition struct {
8181
mockGetFunctionArgs []string
8282
subServiceOverride string
8383
relations []resourceDefinition
84+
singleSubscription bool
8485
}
8586

8687
type byTemplates struct {
@@ -161,7 +162,10 @@ func parseAzureStruct(serviceNameOverride string, definition resourceDefinition)
161162

162163
func initColumns(table *codegen.TableDefinition, definition resourceDefinition) codegen.ColumnDefinitions {
163164
columns := []codegen.ColumnDefinition{}
164-
columns = append(columns, subscriptionIdColumn)
165+
if !definition.singleSubscription {
166+
// add subscription id if we are not in single subscription mode
167+
columns = append(columns, subscriptionIdColumn)
168+
}
165169
if definition.parent != "" {
166170
columns = append(columns, codegen.ColumnDefinition{
167171
Name: definition.parent,
@@ -220,6 +224,10 @@ func initTable(serviceNameOverride string, definition resourceDefinition, azureS
220224
table.Multiplex = "client.SubscriptionMultiplex"
221225
}
222226

227+
if definition.singleSubscription {
228+
table.Multiplex = "client.SingleSubscriptionMultiplex"
229+
}
230+
223231
if definition.includeColumns != "" {
224232
regex := regexp.MustCompile(definition.includeColumns)
225233
newColumns := make(codegen.ColumnDefinitions, 0)

plugins/source/azure/codegen/recipes/subscriptions.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ func Subscriptions() []Resource {
2121
},
2222
definitions: []resourceDefinition{
2323
{
24-
azureStruct: &armsubscriptions.Subscription{},
25-
mockListResult: "ClientListResponse",
26-
tableName: "subscriptions",
24+
azureStruct: &armsubscriptions.Subscription{},
25+
mockListResult: "ClientListResponse",
26+
tableName: "subscriptions",
27+
singleSubscription: true,
2728
},
2829
{
2930
azureStruct: &armsubscriptions.TenantIDDescription{},

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ The primary key for this table is **id**.
77
## Columns
88
| Name | Type |
99
| ------------- | ------------- |
10-
|subscription_id|String|
1110
|authorization_source|String|
1211
|managed_by_tenants|JSON|
1312
|subscription_policies|JSON|

plugins/source/azure/resources/services/subscriptions/subscriptions.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,8 @@ func Subscriptions() *schema.Table {
1313
return &schema.Table{
1414
Name: "azure_subscriptions",
1515
Resolver: fetchSubscriptionsSubscriptions,
16-
Multiplex: client.SubscriptionMultiplex,
16+
Multiplex: client.SingleSubscriptionMultiplex,
1717
Columns: []schema.Column{
18-
{
19-
Name: "subscription_id",
20-
Type: schema.TypeString,
21-
Resolver: client.ResolveAzureSubscription,
22-
},
2318
{
2419
Name: "authorization_source",
2520
Type: schema.TypeString,

0 commit comments

Comments
 (0)