Skip to content

Commit 92d52af

Browse files
committed
Fix APIM deployment issue
1 parent 7208d4c commit 92d52af

8 files changed

+31
-17
lines changed

lib/arm.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ function generateTemplate(input) {
4848
return `[resourceId('Microsoft.ApiManagement/service/apis', '${serviceName}', '${api.fullName}')]`;
4949
}
5050

51+
function resourceIdOperation(serviceName, api, operation) {
52+
return `[resourceId('Microsoft.ApiManagement/service/apis/operations', '${serviceName}', '${api.fullName}', '${operation.name}')]`;
53+
}
54+
5155
function resourceIdProduct(serviceName, product) {
5256
return `[resourceId('Microsoft.ApiManagement/service/products', '${serviceName}', '${product.fullName}')]`;
5357
}
@@ -69,6 +73,8 @@ function generateTemplate(input) {
6973
for (const environment of input.environments) {
7074
const { serviceName } = environment.configuration;
7175

76+
let previousApiId = null;
77+
7278
for (const api of environment.apis) {
7379
const apiResourceId = resourceIdApi(serviceName, api);
7480

@@ -83,6 +89,7 @@ function generateTemplate(input) {
8389
protocols: ["https"],
8490
isCurrent: true
8591
},
92+
dependsOn: previousApiId == null ? [] : [previousApiId],
8693
resources: toArray(api.policies, {
8794
type: "policies",
8895
name: "policy",
@@ -108,11 +115,16 @@ function generateTemplate(input) {
108115
}
109116
}
110117

118+
let previousOperationId = null;
119+
111120
for (const operation of api.operations) {
112121
addResource({
113122
type: "Microsoft.ApiManagement/service/apis/operations",
114123
name: `${serviceName}/${operation.fullName}`,
115-
dependsOn: [apiResourceId],
124+
dependsOn:
125+
previousOperationId == null
126+
? [apiResourceId]
127+
: [apiResourceId, previousOperationId],
116128
properties: {
117129
displayName: operation.fullDisplayName,
118130
method: operation.method,
@@ -133,7 +145,10 @@ function generateTemplate(input) {
133145
}
134146
})
135147
});
148+
previousOperationId = resourceIdOperation(serviceName, api, operation);
136149
}
150+
151+
previousApiId = apiResourceId;
137152
}
138153

139154
for (const product of environment.products) {

test/basic-output.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"protocols": ["https"],
1616
"isCurrent": true
1717
},
18+
"dependsOn": [],
1819
"resources": [],
1920
"apiVersion": "2019-01-01"
2021
},

test/environments-output.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"protocols": ["https"],
1616
"isCurrent": true
1717
},
18+
"dependsOn": [],
1819
"resources": [
1920
{
2021
"type": "policies",

test/operations-output.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"protocols": ["https"],
1616
"isCurrent": true
1717
},
18+
"dependsOn": [],
1819
"resources": [],
1920
"apiVersion": "2019-01-01"
2021
},
@@ -50,7 +51,8 @@
5051
"type": "Microsoft.ApiManagement/service/apis/operations",
5152
"name": "apim1/example-api-development/post-data",
5253
"dependsOn": [
53-
"[resourceId('Microsoft.ApiManagement/service/apis', 'apim1', 'example-api-development')]"
54+
"[resourceId('Microsoft.ApiManagement/service/apis', 'apim1', 'example-api-development')]",
55+
"[resourceId('Microsoft.ApiManagement/service/apis/operations', 'apim1', 'example-api-development', 'get-data')]"
5456
],
5557
"properties": {
5658
"displayName": "Post-Data",
@@ -62,9 +64,7 @@
6264
"description": "Param 1",
6365
"type": "number",
6466
"defaultValue": "1",
65-
"values": [
66-
"1"
67-
]
67+
"values": ["1"]
6868
}
6969
],
7070
"request": {

test/parameters-output.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"protocols": ["https"],
2121
"isCurrent": true
2222
},
23+
"dependsOn": [],
2324
"resources": [],
2425
"apiVersion": "2019-01-01"
2526
},

test/properties-mixed-output.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"protocols": ["https"],
1616
"isCurrent": true
1717
},
18+
"dependsOn": [],
1819
"resources": [
1920
{
2021
"type": "policies",

test/properties-reference-output.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"protocols": ["https"],
1616
"isCurrent": true
1717
},
18+
"dependsOn": [],
1819
"resources": [
1920
{
2021
"type": "policies",

test/reference-variables-output.json

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,15 @@
1212
"apiRevision": "1",
1313
"subscriptionRequired": true,
1414
"path": "example-api",
15-
"protocols": [
16-
"https"
17-
],
15+
"protocols": ["https"],
1816
"isCurrent": true
1917
},
18+
"dependsOn": [],
2019
"resources": [
2120
{
2221
"type": "policies",
2322
"name": "policy",
24-
"dependsOn": [
25-
"example-api-development"
26-
],
23+
"dependsOn": ["example-api-development"],
2724
"properties": {
2825
"value": "<policies><inbound><base />\n<set-backend-service base-url=\"https://dev.example.com\" />\n<authentication-basic username=\"{{ExampleApi-Development-Default-Username}}\" password=\"{{ExampleApi-Development-Default-Password}}\" />\n</inbound><backend><base /></backend><outbound><base /></outbound><on-error><base /></on-error></policies>",
2926
"format": "xml"
@@ -60,18 +57,15 @@
6057
"apiRevision": "1",
6158
"subscriptionRequired": true,
6259
"path": "example-api",
63-
"protocols": [
64-
"https"
65-
],
60+
"protocols": ["https"],
6661
"isCurrent": true
6762
},
63+
"dependsOn": [],
6864
"resources": [
6965
{
7066
"type": "policies",
7167
"name": "policy",
72-
"dependsOn": [
73-
"example-api-quality"
74-
],
68+
"dependsOn": ["example-api-quality"],
7569
"properties": {
7670
"value": "<policies><inbound><base />\n<set-backend-service base-url=\"https://example.com\" />\n<authentication-basic username=\"{{ExampleApi-Quality-Default-Username}}\" password=\"{{ExampleApi-Quality-Default-Password}}\" />\n</inbound><backend><base /></backend><outbound><base /></outbound><on-error><base /></on-error></policies>",
7771
"format": "xml"

0 commit comments

Comments
 (0)