Skip to content

Commit 9bc761e

Browse files
committed
refactor: finish migration
1 parent 2edf896 commit 9bc761e

File tree

2 files changed

+22
-88
lines changed

2 files changed

+22
-88
lines changed

packages/core/src/shared/clients/cloudControl.ts

Lines changed: 20 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import { CloudControl } from 'aws-sdk'
76
import * as CloudControlV3 from '@aws-sdk/client-cloudcontrol'
87
import globals from '../extensionGlobals'
98
import { localize } from '../utilities/vsCodeUtils'
@@ -22,36 +21,36 @@ export class CloudControlClient extends ClientWrapper<CloudControlV3.CloudContro
2221
request
2322
)
2423

25-
await this.pollForCompletionV3(createResponse.ProgressEvent!)
24+
await this.pollForCompletion(createResponse.ProgressEvent!)
2625
return createResponse
2726
}
2827

29-
public async deleteResource(request: CloudControl.DeleteResourceInput): Promise<void> {
30-
const client = await this.createSdkClient()
31-
32-
const deleteResponse = await client.deleteResource(request).promise()
28+
public async deleteResource(request: CloudControlV3.DeleteResourceInput): Promise<void> {
29+
const deleteResponse: CloudControlV3.DeleteResourceOutput = await this.makeRequest(
30+
CloudControlV3.DeleteResourceCommand,
31+
request
32+
)
3333

34-
await this.pollForCompletion(client, deleteResponse.ProgressEvent!)
34+
await this.pollForCompletion(deleteResponse.ProgressEvent!)
3535
}
3636

37-
public async listResources(request: CloudControl.ListResourcesInput): Promise<CloudControl.ListResourcesOutput> {
38-
const client = await this.createSdkClient()
39-
40-
return await client.listResources(request).promise()
37+
public async listResources(
38+
request: CloudControlV3.ListResourcesInput
39+
): Promise<CloudControlV3.ListResourcesOutput> {
40+
return await this.makeRequest(CloudControlV3.ListResourcesCommand, request)
4141
}
4242

43-
public async getResource(request: CloudControl.GetResourceInput): Promise<CloudControl.GetResourceOutput> {
44-
const client = await this.createSdkClient()
45-
46-
return await client.getResource(request).promise()
43+
public async getResource(request: CloudControlV3.GetResourceInput): Promise<CloudControlV3.GetResourceOutput> {
44+
return await this.makeRequest(CloudControlV3.GetResourceCommand, request)
4745
}
4846

49-
public async updateResource(request: CloudControl.UpdateResourceInput): Promise<void> {
50-
const client = await this.createSdkClient()
51-
52-
const updateResponse = await client.updateResource(request).promise()
47+
public async updateResource(request: CloudControlV3.UpdateResourceInput): Promise<void> {
48+
const updateResponse: CloudControlV3.UpdateResourceOutput = await this.makeRequest(
49+
CloudControlV3.UpdateResourceCommand,
50+
request
51+
)
5352

54-
await this.pollForCompletion(client, updateResponse.ProgressEvent!)
53+
await this.pollForCompletion(updateResponse.ProgressEvent!)
5554
}
5655

5756
private async getResourceRequestStatus(
@@ -60,7 +59,7 @@ export class CloudControlClient extends ClientWrapper<CloudControlV3.CloudContro
6059
return await this.makeRequest(CloudControlV3.GetResourceRequestStatusCommand, request)
6160
}
6261

63-
private async pollForCompletionV3(
62+
private async pollForCompletion(
6463
progressEvent: CloudControlV3.ProgressEvent,
6564
baseDelay: number = 500,
6665
maxRetries: number = 10
@@ -118,70 +117,4 @@ export class CloudControlClient extends ClientWrapper<CloudControlV3.CloudContro
118117
)
119118
)
120119
}
121-
122-
private async pollForCompletion(
123-
client: CloudControl,
124-
progressEvent: CloudControl.ProgressEvent,
125-
baseDelay: number = 500,
126-
maxRetries: number = 10
127-
): Promise<void> {
128-
for (let i = 0; i < maxRetries; i++) {
129-
const operationStatus = progressEvent.OperationStatus
130-
131-
switch (operationStatus) {
132-
case 'SUCCESS':
133-
return
134-
case 'FAILED':
135-
throw new Error(
136-
localize(
137-
'AWS.message.error.cloudControl.pollResourceStatus.failed',
138-
'Resource operation failed: {0} ({1})',
139-
progressEvent.StatusMessage,
140-
progressEvent.ErrorCode
141-
)
142-
)
143-
case 'CANCEL_COMPLETE':
144-
throw new Error(
145-
localize(
146-
'AWS.message.error.cloudControl.pollResourceStatus.cancelled',
147-
'Resource operation cancelled: {0}',
148-
progressEvent.StatusMessage
149-
)
150-
)
151-
case 'IN_PROGRESS':
152-
case 'CANCEL_IN_PROGRESS':
153-
case 'PENDING':
154-
break
155-
default:
156-
throw new Error(
157-
localize(
158-
'AWS.message.error.cloudControl.pollResourceStatus.invalidOperationStatus',
159-
'Invalid resource operation status: {0}',
160-
operationStatus
161-
)
162-
)
163-
}
164-
165-
if (i + 1 < maxRetries) {
166-
await new Promise<void>((resolve) => globals.clock.setTimeout(resolve, baseDelay * 2 ** i))
167-
const resourceRequestStatus = await client
168-
.getResourceRequestStatus({
169-
RequestToken: progressEvent.RequestToken!,
170-
})
171-
.promise()
172-
progressEvent = resourceRequestStatus.ProgressEvent!
173-
}
174-
}
175-
throw new Error(
176-
localize(
177-
'AWS.message.error.cloudControl.pollResourceStatus.timeout',
178-
'Failed to get terminal resource operation status for {0} before timeout. Please try again later',
179-
progressEvent.Identifier
180-
)
181-
)
182-
}
183-
184-
private async createSdkClient(): Promise<CloudControl> {
185-
return await globals.sdkClientBuilder.createAwsService(CloudControl, undefined, this.regionCode)
186-
}
187120
}

packages/core/src/test/dynamicResources/awsResourceManager.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ import { existsSync } from 'fs' // eslint-disable-line no-restricted-imports
2020
import { ResourceTypeMetadata } from '../../dynamicResources/model/resources'
2121
import globals from '../../shared/extensionGlobals'
2222
import { Stub, stub } from '../utilities/stubber'
23-
import { CloudControl, CloudFormation } from 'aws-sdk'
23+
import { CloudFormation } from 'aws-sdk'
24+
import * as CloudControl from '@aws-sdk/client-cloudcontrol'
2425
import { fs } from '../../shared'
2526

2627
describe('ResourceManager', function () {

0 commit comments

Comments
 (0)