@@ -2,6 +2,7 @@ const { Capi } = require('@tencent-sdk/capi');
2
2
const { waitResponse } = require ( '@ygkit/request' ) ;
3
3
const capis = require ( './apis/apis' ) ;
4
4
const apis = require ( './apis' ) ;
5
+ const { ApiError } = require ( '../../utils/error' ) ;
5
6
6
7
// timeout 2 minutes
7
8
const TIMEOUT = 2 * 60 * 1000 ;
@@ -57,23 +58,42 @@ class Layer {
57
58
console . log ( `Creating layer ${ inputs . name } ` ) ;
58
59
const version = await apis . publishLayer ( this . capi , layerInputs ) ;
59
60
// loop for active status
60
- await waitResponse ( {
61
- callback : async ( ) => this . getLayerDetail ( inputs . name , version ) ,
62
- targetProp : 'Status' ,
63
- targetResponse : 'Active' ,
64
- timeout : TIMEOUT ,
65
- } ) ;
66
- console . log ( `Created layer: ${ inputs . name } , version: ${ version } successful` ) ;
61
+ try {
62
+ await waitResponse ( {
63
+ callback : async ( ) => this . getLayerDetail ( inputs . name , version ) ,
64
+ targetProp : 'Status' ,
65
+ targetResponse : 'Active' ,
66
+ timeout : TIMEOUT ,
67
+ } ) ;
68
+ } catch ( e ) {
69
+ const detail = await this . getLayerDetail ( inputs . name , version ) ;
70
+ if ( detail ) {
71
+ // if not active throw error
72
+ if ( detail . Status !== 'Active' ) {
73
+ throw new ApiError ( {
74
+ type : 'API_LAYER_GetLayerVersion' ,
75
+ message : `Cannot create layer success in 2 minutes, status: ${ detail . Status } (reqId: ${ detail . RequestId } )` ,
76
+ } ) ;
77
+ }
78
+ } else {
79
+ // if can not get detail throw error
80
+ throw new ApiError ( {
81
+ type : 'API_LAYER_GetLayerVersion' ,
82
+ message : `Cannot create layer success in 2 minutes` ,
83
+ } ) ;
84
+ }
85
+ }
86
+ console . log ( `Created layer: ${ inputs . name } , version: ${ version } success` ) ;
67
87
outputs . version = version ;
68
88
69
89
return outputs ;
70
90
}
71
91
72
92
async remove ( inputs = { } ) {
73
93
try {
74
- console . log ( `Start removing layer: ${ inputs . name } , version: ${ inputs . version } ... ` ) ;
94
+ console . log ( `Start removing layer: ${ inputs . name } , version: ${ inputs . version } ` ) ;
75
95
await apis . deleteLayerVersion ( this . capi , inputs . name , inputs . version ) ;
76
- console . log ( `Remove layer: ${ inputs . name } , version: ${ inputs . version } successfully ` ) ;
96
+ console . log ( `Remove layer: ${ inputs . name } , version: ${ inputs . version } success ` ) ;
77
97
} catch ( e ) {
78
98
console . log ( e ) ;
79
99
}
0 commit comments