@@ -16,19 +16,17 @@ import * as settingUtils from "../../utils/settingUtils";
1616import { Constants } from "../../commons/constants" ;
1717
1818export interface ITerraformShellManager {
19- getShell ( ) : BaseShell ;
19+ getShell ( ) : Promise < BaseShell > ;
2020 // getCloudShell(): TCCloudShell;
21- getIntegratedShell ( runner ?: any ) : IntegratedShell ;
21+ getIntegratedShell ( runner ?: any ) : Promise < IntegratedShell > ;
2222 dispose ( ) : void ;
2323}
2424
25-
26-
2725class TerraformShellManager implements ITerraformShellManager {
2826 private static cloudShell = new TencentCloudShell ( ) ;
2927 private static integratedShell : IntegratedShell ;
3028
31- public getShell ( ) : BaseShell {
29+ public async getShell ( ) : Promise < BaseShell > {
3230 const isCloudShell : boolean = isTerminalSetToCloudShell ( ) ;
3331
3432 TelemetryWrapper . addContextProperty ( "isCloudShell" , isCloudShell . toString ( ) ) ;
@@ -42,26 +40,36 @@ class TerraformShellManager implements ITerraformShellManager {
4240 return TerraformShellManager . cloudShell ;
4341 }
4442
45- public getIntegratedShell ( runner ?: any ) : IntegratedShell {
43+ public async getIntegratedShell ( runner ?: any ) : Promise < IntegratedShell > {
4644 if ( ! TerraformShellManager . integratedShell ) {
4745 // set TencentCloud AKSK, Region and Client info
48- const [ ak , sk , region ] = settingUtils . getAKSKandRegion ( ) ;
49- const tfEnv = {
50- [ Constants . REQUEST_CLIENT ] : context . genRequestClient ( ) ,
51- [ Constants . TENCENTCLOUD_SECRET_ID ] : ak ,
52- [ Constants . TENCENTCLOUD_SECRET_KEY ] : sk ,
53- [ Constants . TENCENTCLOUD_REGION ] : region ,
54- } ;
55- // default runner is Terraformer
56- TerraformShellManager . integratedShell = new IntegratedShell ( TerraformerRunner . getInstance ( ) , tfEnv ) ;
57- // specify runner
58- if ( runner ) {
59- TerraformShellManager . integratedShell = new IntegratedShell ( runner , tfEnv ) ;
46+ await this . initIntegratedShell ( runner ) ;
47+ } else {
48+ const curEnv = TerraformShellManager . integratedShell . getEnv ( ) ;
49+ // need to be reset if the current AKSK is undefined
50+ if ( ! curEnv [ Constants . TENCENTCLOUD_SECRET_ID ] || ! curEnv [ Constants . TENCENTCLOUD_SECRET_KEY ] ) {
51+ await this . initIntegratedShell ( runner ) ;
6052 }
6153 }
6254 return TerraformShellManager . integratedShell ;
6355 }
6456
57+ private async initIntegratedShell ( runner : any ) {
58+ const [ ak , sk , region ] = settingUtils . getAKSKandRegion ( ) ;
59+ const reqCli = await context . genRequestClient ( ) ;
60+ const tfEnv = {
61+ [ Constants . REQUEST_CLIENT ] : reqCli , // set ReqCli for TIC Terminal
62+ [ Constants . TENCENTCLOUD_SECRET_ID ] : ak ,
63+ [ Constants . TENCENTCLOUD_SECRET_KEY ] : sk ,
64+ [ Constants . TENCENTCLOUD_REGION ] : region ,
65+ } ;
66+ // default runner is Terraformer
67+ TerraformShellManager . integratedShell = new IntegratedShell ( TerraformerRunner . getInstance ( ) , tfEnv ) ;
68+ if ( runner ) {
69+ TerraformShellManager . integratedShell = new IntegratedShell ( runner , tfEnv ) ;
70+ }
71+ }
72+
6573 public dispose ( ) : void {
6674 TerraformShellManager . cloudShell . dispose ( ) ;
6775 TerraformShellManager . integratedShell . dispose ( ) ;
0 commit comments