Skip to content

Commit 4329c38

Browse files
authored
fix: scf remove apigw logical (#156)
* fix: scf remove apigw logical * test: fix scf unit test * fix: simplify createOrUpdateApi method
1 parent 9368462 commit 4329c38

File tree

4 files changed

+33
-30
lines changed

4 files changed

+33
-30
lines changed

__tests__/scf.test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@ describe('Scf', () => {
190190
TriggerDesc: `{"cron":"${inputs.events[0].timer.parameters.cronExpression}"}`,
191191
TriggerName: inputs.events[0].timer.name,
192192
Type: 'timer',
193+
BindStatus: '',
194+
ResourceId: '',
195+
TriggerAttribute: '',
193196
},
194197
{
195198
AddTime: expect.any(String),
@@ -200,6 +203,9 @@ describe('Scf', () => {
200203
TriggerDesc: `{"bucketUrl":"${inputs.events[1].cos.parameters.bucket}","event":"${inputs.events[1].cos.parameters.events}","filter":{"Prefix":"${inputs.events[1].cos.parameters.filter.prefix}","Suffix":"${inputs.events[1].cos.parameters.filter.suffix}"}}`,
201204
TriggerName: expect.stringContaining('cos_'),
202205
Type: 'cos',
206+
BindStatus: '',
207+
ResourceId: '',
208+
TriggerAttribute: '',
203209
},
204210
{
205211
created: true,

src/modules/apigw/index.js

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ class Apigw {
210210
}
211211
}
212212

213-
async createOrUpdateApi({ serviceId, endpoint }) {
213+
async createOrUpdateApi({ serviceId, endpoint, created }) {
214214
const output = {
215215
path: endpoint.path,
216216
method: endpoint.method,
@@ -298,6 +298,7 @@ class Apigw {
298298
apiId: endpoint.apiId,
299299
...apiInputs,
300300
});
301+
output.created = !!created;
301302
output.apiId = endpoint.apiId;
302303
output.internalDomain = apiDetail.InternalDomain;
303304
console.log(`Service with id ${output.apiId} updated.`);
@@ -307,9 +308,9 @@ class Apigw {
307308
return output;
308309
}
309310

310-
async setupUsagePlanSecret({ secretName, secretIds }) {
311+
async setupUsagePlanSecret({ secretName, secretIds, created }) {
311312
const secretIdsOutput = {
312-
created: false,
313+
created: !!created,
313314
secretIds,
314315
};
315316

@@ -321,7 +322,7 @@ class Apigw {
321322
SecretName: secretName,
322323
AccessKeyType: 'auto',
323324
});
324-
console.log(`Secret key with ID ${AccessKeyId} and key ${AccessKeySecret} updated.`);
325+
console.log(`Secret key with ID ${AccessKeyId} and key ${AccessKeySecret} created`);
325326
secretIdsOutput.secretIds = [AccessKeyId];
326327
secretIdsOutput.created = true;
327328
} else {
@@ -614,14 +615,13 @@ class Apigw {
614615

615616
if (exist) {
616617
endpoint.apiId = exist.apiId;
618+
endpoint.created = exist.created;
617619
}
618620
const curApi = await this.createOrUpdateApi({
619621
serviceId,
620622
endpoint,
623+
created: exist && exist.created,
621624
});
622-
if (exist) {
623-
curApi.created = true;
624-
}
625625

626626
// set api auth and use plan
627627
if (endpoint.auth) {
@@ -636,10 +636,16 @@ class Apigw {
636636
// store in api list
637637
curApi.usagePlan = usagePlan;
638638

639-
const { secretIds = [] } = endpoint.auth;
639+
let secretCreated = false;
640+
let { secretIds = [] } = endpoint.auth;
641+
if (exist && exist.usagePlan && exist.usagePlan.secrets) {
642+
secretIds = secretIds.concat(exist.usagePlan.secrets.secretIds);
643+
secretCreated = exist.usagePlan.secrets.created;
644+
}
640645
const secrets = await this.setupUsagePlanSecret({
641646
secretName: endpoint.auth.secretName,
642647
secretIds,
648+
created: secretCreated,
643649
});
644650

645651
const unboundSecretIds = await this.getUnboundSecretIds({
@@ -688,7 +694,7 @@ class Apigw {
688694
console.log(`Deploy service with id ${serviceId} successfully.`);
689695

690696
const outputs = {
691-
created: serviceCreated,
697+
created: serviceCreated || oldState.created,
692698
serviceId,
693699
serviceName,
694700
subDomain,
@@ -810,16 +816,16 @@ class Apigw {
810816
}
811817
}
812818

813-
// 3. unrelease service
814-
console.log(`Unreleasing service: ${serviceId}, environment: ${environment}`);
815-
await this.removeOrUnbindRequest({
816-
Action: 'UnReleaseService',
817-
serviceId,
818-
environmentName: environment,
819-
});
820-
console.log(`Unrelease service: ${serviceId}, environment: ${environment} success`);
821-
822819
if (created === true) {
820+
// unrelease service
821+
console.log(`Unreleasing service: ${serviceId}, environment: ${environment}`);
822+
await this.removeOrUnbindRequest({
823+
Action: 'UnReleaseService',
824+
serviceId,
825+
environmentName: environment,
826+
});
827+
console.log(`Unrelease service: ${serviceId}, environment: ${environment} success`);
828+
823829
// delete service
824830
console.log(`Removing service: ${serviceId}`);
825831
await this.removeOrUnbindRequest({

src/modules/scf/index.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -625,18 +625,6 @@ class Scf {
625625
try {
626626
// delete apigw trigger
627627
const curTrigger = inputs.Triggers[i];
628-
curTrigger.created = true;
629-
const { apiList } = curTrigger;
630-
curTrigger.apiList = apiList.map((item) => {
631-
item.created = true;
632-
if (item.usagePlan) {
633-
item.usagePlan.created = true;
634-
if (item.usagePlan.secrets) {
635-
item.usagePlan.secrets.created = true;
636-
}
637-
}
638-
return item;
639-
});
640628
await this.apigwClient.remove(curTrigger);
641629
} catch (e) {
642630
console.log(e);

src/modules/scf/triggers.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,10 @@ const ApigwTrigger = {
201201
formatInputs(region, funcInfo, inputs) {
202202
const { parameters, name } = inputs;
203203
const triggerInputs = {};
204+
triggerInputs.oldState = parameters.oldState;
204205
triggerInputs.region = region;
205206
triggerInputs.protocols = parameters.protocols;
207+
triggerInputs.protocols = parameters.protocols;
206208
triggerInputs.environment = parameters.environment;
207209
triggerInputs.serviceId = parameters.serviceId;
208210
triggerInputs.serviceName = parameters.serviceName || name;
@@ -221,6 +223,7 @@ const ApigwTrigger = {
221223
if (parameters.netTypes) {
222224
triggerInputs.netTypes = parameters.netTypes;
223225
}
226+
triggerInputs.created = !!parameters.created;
224227
return {
225228
triggerInputs,
226229
};

0 commit comments

Comments
 (0)