@drunk-pulumi/azure 1.0.36 → 1.0.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Builder/ApimApiBuilder.d.ts +2 -0
- package/Builder/ApimApiBuilder.js +37 -33
- package/package.json +1 -1
|
@@ -20,6 +20,8 @@ export default class ApimApiBuilder extends BuilderAsync<ResourceInfo> implement
|
|
|
20
20
|
private buildApiSet;
|
|
21
21
|
private buildOperations;
|
|
22
22
|
private buildApiDiagnostic;
|
|
23
|
+
private buildProductLink;
|
|
24
|
+
private buildApiPolicy;
|
|
23
25
|
private buildApis;
|
|
24
26
|
build(): Promise<ResourceInfo>;
|
|
25
27
|
}
|
|
@@ -83,15 +83,15 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
83
83
|
versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
|
|
84
84
|
}, { dependsOn: this.args.dependsOn, deleteBeforeReplace: true });
|
|
85
85
|
}
|
|
86
|
-
buildOperations({
|
|
86
|
+
buildOperations({ name, api, operations, }) {
|
|
87
87
|
return operations.map((op) => {
|
|
88
88
|
const opsName = op.name.replace(/\//g, '');
|
|
89
|
-
const opsRsName = `${
|
|
89
|
+
const opsRsName = `${name}-ops-${opsName}-${op.method}`.toLowerCase();
|
|
90
90
|
const apiOps = new apim.ApiOperation(opsRsName, {
|
|
91
91
|
operationId: opsName,
|
|
92
92
|
serviceName: this.args.apimServiceName,
|
|
93
93
|
resourceGroupName: this.args.group.resourceGroupName,
|
|
94
|
-
apiId:
|
|
94
|
+
apiId: name,
|
|
95
95
|
displayName: op.name,
|
|
96
96
|
description: op.name,
|
|
97
97
|
urlTemplate: op.urlTemplate ?? op.name,
|
|
@@ -118,7 +118,7 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
118
118
|
statusCode: 200,
|
|
119
119
|
},
|
|
120
120
|
],
|
|
121
|
-
}, { dependsOn });
|
|
121
|
+
}, { dependsOn: api });
|
|
122
122
|
if (op.policies) {
|
|
123
123
|
const policyString = op
|
|
124
124
|
.policies(new ApimPolicyBuilder_1.default({
|
|
@@ -130,20 +130,20 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
130
130
|
operationId: opsName,
|
|
131
131
|
serviceName: this.args.apimServiceName,
|
|
132
132
|
resourceGroupName: this.args.group.resourceGroupName,
|
|
133
|
-
apiId:
|
|
133
|
+
apiId: name,
|
|
134
134
|
policyId: 'policy',
|
|
135
135
|
format: 'xml',
|
|
136
136
|
value: policyString,
|
|
137
|
-
});
|
|
137
|
+
}, { dependsOn: apiOps });
|
|
138
138
|
}
|
|
139
139
|
return apiOps;
|
|
140
140
|
});
|
|
141
141
|
}
|
|
142
|
-
buildApiDiagnostic(
|
|
143
|
-
new apim.ApiDiagnostic(`apim-${
|
|
142
|
+
buildApiDiagnostic(name, api) {
|
|
143
|
+
new apim.ApiDiagnostic(`apim-${name}-apiDiagnostic`, {
|
|
144
144
|
serviceName: this.args.apimServiceName,
|
|
145
145
|
resourceGroupName: this.args.group.resourceGroupName,
|
|
146
|
-
apiId,
|
|
146
|
+
apiId: name,
|
|
147
147
|
alwaysLog: apim.AlwaysLog.AllErrors,
|
|
148
148
|
httpCorrelationProtocol: 'W3C',
|
|
149
149
|
operationNameFormat: 'Url',
|
|
@@ -155,7 +155,28 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
155
155
|
percentage: 100,
|
|
156
156
|
samplingType: apim.SamplingType.Fixed,
|
|
157
157
|
},
|
|
158
|
-
}, { dependsOn });
|
|
158
|
+
}, { dependsOn: api });
|
|
159
|
+
}
|
|
160
|
+
buildProductLink(name, api) {
|
|
161
|
+
//Link API to Product
|
|
162
|
+
return new apim.ProductApi(name, {
|
|
163
|
+
serviceName: this.args.apimServiceName,
|
|
164
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
165
|
+
productId: this.args.productId,
|
|
166
|
+
apiId: name,
|
|
167
|
+
}, { dependsOn: api });
|
|
168
|
+
}
|
|
169
|
+
buildApiPolicy(name, api) {
|
|
170
|
+
if (!this._policyString)
|
|
171
|
+
return;
|
|
172
|
+
return new apim.ApiPolicy(`${name}-policy`, {
|
|
173
|
+
serviceName: this.args.apimServiceName,
|
|
174
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
175
|
+
apiId: name,
|
|
176
|
+
policyId: 'policy',
|
|
177
|
+
format: 'xml',
|
|
178
|
+
value: this._policyString,
|
|
179
|
+
}, { dependsOn: api });
|
|
159
180
|
}
|
|
160
181
|
async buildApis() {
|
|
161
182
|
const date = new Date();
|
|
@@ -194,32 +215,15 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
194
215
|
deleteBeforeReplace: true,
|
|
195
216
|
customTimeouts: { create: '20m', update: '20m' },
|
|
196
217
|
});
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
resourceGroupName: this.args.group.resourceGroupName,
|
|
201
|
-
productId: this.args.productId,
|
|
202
|
-
apiId: apiName,
|
|
203
|
-
}, { dependsOn: api });
|
|
204
|
-
// Apply Policy for the API
|
|
205
|
-
if (this._policyString) {
|
|
206
|
-
new apim.ApiPolicy(`${apiName}-policy`, {
|
|
207
|
-
serviceName: this.args.apimServiceName,
|
|
208
|
-
resourceGroupName: this.args.group.resourceGroupName,
|
|
209
|
-
apiId: apiName,
|
|
210
|
-
policyId: 'policy',
|
|
211
|
-
format: 'xml',
|
|
212
|
-
value: this._policyString,
|
|
213
|
-
}, { dependsOn: api });
|
|
214
|
-
}
|
|
215
|
-
//Diagnostic
|
|
216
|
-
this.buildApiDiagnostic({ apiId: apiName, dependsOn: api });
|
|
218
|
+
this.buildProductLink(apiName, api);
|
|
219
|
+
this.buildApiPolicy(apiName, api);
|
|
220
|
+
this.buildApiDiagnostic(apiName, api);
|
|
217
221
|
//Create Aoi Operations
|
|
218
222
|
if ('operations' in apiProps) {
|
|
219
223
|
this.buildOperations({
|
|
220
|
-
|
|
224
|
+
name: apiRevName,
|
|
221
225
|
operations: apiProps.operations,
|
|
222
|
-
|
|
226
|
+
api,
|
|
223
227
|
});
|
|
224
228
|
}
|
|
225
229
|
});
|
|
@@ -236,4 +240,4 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
236
240
|
}
|
|
237
241
|
}
|
|
238
242
|
exports.default = ApimApiBuilder;
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQXBpQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNEQUFtRDtBQUNuRCwyQ0FBb0Q7QUFDcEQsc0NBQW9EO0FBRXBELDRFQUFvRDtBQUNwRCxtQ0FVaUI7QUFFakIsTUFBcUIsY0FDbkIsU0FBUSxvQkFBMEI7SUFnQnhCO0lBYkYsZUFBZSxHQUFtQyxTQUFTLENBQUM7SUFFNUQsV0FBVyxHQUFzQyxTQUFTLENBQUM7SUFDM0QsY0FBYyxHQUFvQjtRQUN4QyxNQUFNLEVBQUUsV0FBVztRQUNuQixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0lBQ00sS0FBSyxHQUFpQyxFQUFFLENBQUM7SUFFaEMsZ0JBQWdCLENBQVM7SUFDbEMsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFFdEQsWUFDVSxJQUdQO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTEosU0FBSSxHQUFKLElBQUksQ0FHWDtRQUdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxjQUFjO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDJCQUFpQixDQUFDO1lBQ3pDLEdBQUcsSUFBSTtZQUNQLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLElBQUksMkJBQWlCLENBQUM7WUFDcEIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FDSCxD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
|