Skip to content

Commit e9d7332

Browse files
committed
fix(src): traffic precision
1 parent c4b8b4b commit e9d7332

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/modules/scf/index.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const { scf, cam } = require('tencent-cloud-sdk');
22
const { sleep } = require('@ygkit/request');
33
const { TypeError } = require('../../utils/error');
4+
const { strip } = require('../../utils');
45
const TagsUtils = require('../tag/index');
56
const ApigwUtils = require('../apigw/index');
67
const { formatTrigger, formatFunctionInputs } = require('./utils');
@@ -345,6 +346,7 @@ class Scf {
345346
}
346347

347348
async publishVersionAndConfigTraffic(inputs) {
349+
const weight = strip(1 - inputs.traffic);
348350
const publishInputs = {
349351
Action: 'CreateAlias',
350352
Version: '2018-04-16',
@@ -354,7 +356,7 @@ class Scf {
354356
Name: inputs.aliasName,
355357
Namespace: inputs.namespace || 'default',
356358
RoutingConfig: {
357-
AdditionalVersionWeights: [{ Version: inputs.functionVersion, Weight: 1 - inputs.traffic }],
359+
AdditionalVersionWeights: [{ Version: inputs.functionVersion, Weight: weight }],
358360
},
359361
Description: inputs.description || 'Published by Serverless Component',
360362
};
@@ -371,10 +373,9 @@ class Scf {
371373
}
372374

373375
async updateAliasTraffic(inputs) {
376+
const weight = strip(1 - inputs.traffic);
374377
console.log(
375-
`Config function ${inputs.functionName} traffic ${1 - inputs.traffic} for version ${
376-
inputs.lastVersion
377-
}...`,
378+
`Config function ${inputs.functionName} traffic ${weight} for version ${inputs.lastVersion}...`,
378379
);
379380
const publishInputs = {
380381
Action: 'UpdateAlias',
@@ -385,7 +386,7 @@ class Scf {
385386
Name: inputs.aliasName || '$DEFAULT',
386387
Namespace: inputs.namespace || 'default',
387388
RoutingConfig: {
388-
AdditionalVersionWeights: [{ Version: inputs.lastVersion, Weight: 1 - inputs.traffic }],
389+
AdditionalVersionWeights: [{ Version: inputs.lastVersion, Weight: weight }],
389390
},
390391
Description: inputs.description || 'Configured by Serverless Component',
391392
};
@@ -399,9 +400,7 @@ class Scf {
399400
);
400401
}
401402
console.log(
402-
`Config function ${inputs.functionName} traffic ${1 - inputs.traffic} for version ${
403-
inputs.lastVersion
404-
} success`,
403+
`Config function ${inputs.functionName} traffic ${weight} for version ${inputs.lastVersion} success`,
405404
);
406405
return res.Response;
407406
}
@@ -517,7 +516,7 @@ class Scf {
517516
});
518517
outputs.LastVersion = lastVersion;
519518
outputs.ConfigTrafficVersion = lastVersion;
520-
outputs.Traffic = 1 - weightSum;
519+
outputs.Traffic = strip(1 - weightSum);
521520
}
522521
} catch (e) {
523522
// no op

src/utils/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,16 @@ function camelCaseProperty(obj) {
116116
return res;
117117
}
118118

119+
function strip(num, precision = 12) {
120+
return +parseFloat(num.toPrecision(precision));
121+
}
122+
119123
module.exports = {
120124
isArray,
121125
isObject,
122126
_forEach,
123127
flatten,
124128
uniqueArray,
125129
camelCaseProperty,
130+
strip,
126131
};

0 commit comments

Comments
 (0)