Skip to content

Commit 6fefd79

Browse files
committed
provide stack mgmt info for a resource
1 parent 642217c commit 6fefd79

File tree

5 files changed

+25
-1
lines changed

5 files changed

+25
-1
lines changed

src/handlers/ResourceHandler.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ import {
88
ResourceStateParams,
99
ResourceStateResult,
1010
ResourceSummary,
11+
ResourceIdentifier,
1112
} from '../resourceState/ResourceStateTypes';
13+
import { ResourceStackManagementResult } from '../resourceState/StackManagementInfoProvider';
1214
import { ServerComponents } from '../server/ServerComponents';
1315
import { LoggerFactory } from '../telemetry/LoggerFactory';
1416
import { extractErrorMessage } from '../utils/Errors';
@@ -86,3 +88,11 @@ export function refreshResourceListHandler(
8688
}
8789
};
8890
}
91+
92+
export function getStackMgmtInfo(
93+
components: ServerComponents,
94+
): ServerRequestHandler<ResourceIdentifier, ResourceStackManagementResult, never, void> {
95+
return async (id) => {
96+
return await components.stackManagementInfoProvider.getResourceManagementState(id);
97+
};
98+
}

src/protocol/LspResourceHandlers.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ import {
1111
RefreshResourceListRequest,
1212
RefreshResourcesParams,
1313
RefreshResourcesResult,
14+
StackMgmtInfoRequest,
15+
ResourceIdentifier,
1416
} from '../resourceState/ResourceStateTypes';
17+
import { ResourceStackManagementResult } from '../resourceState/StackManagementInfoProvider';
1518

1619
export class LspResourceHandlers {
1720
constructor(private readonly connection: Connection) {}
@@ -31,4 +34,8 @@ export class LspResourceHandlers {
3134
onResourceStateImport(handler: ServerRequestHandler<ResourceStateParams, ResourceStateResult, never, void>) {
3235
this.connection.onRequest(ResourceStateRequest.method, handler);
3336
}
37+
38+
onStackMgmtInfo(handler: ServerRequestHandler<ResourceIdentifier, ResourceStackManagementResult, never, void>) {
39+
this.connection.onRequest(StackMgmtInfoRequest.method, handler);
40+
}
3441
}

src/resourceState/ResourceStateTypes.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { CodeAction, CodeActionParams } from 'vscode-languageserver';
22
import { RequestType } from 'vscode-languageserver-protocol';
3+
import { ResourceStackManagementResult } from './StackManagementInfoProvider';
34

45
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
56
export type ResourceTypesParams = {};
@@ -86,3 +87,7 @@ export interface ResourceTemplateFormat {
8687
};
8788
};
8889
}
90+
91+
export const StackMgmtInfoRequest = new RequestType<ResourceIdentifier, ResourceStackManagementResult, void>(
92+
'aws/cfn/resources/stackMgmtInfo',
93+
);

src/resourceState/StackManagementInfoProvider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { CloudFormationServiceException } from '@aws-sdk/client-cloudformation';
22
import { CfnService } from '../services/CfnService';
33
import { LoggerFactory } from '../telemetry/LoggerFactory';
44

5-
type ResourceStackManagementResult = {
5+
export type ResourceStackManagementResult = {
66
physicalResourceId: string;
77
managedByStack: boolean | undefined;
88
stackName?: string;

src/server/CfnServer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import {
2222
getResourceTypesHandler,
2323
importResourceStateHandler,
2424
refreshResourceListHandler,
25+
getStackMgmtInfo,
2526
} from '../handlers/ResourceHandler';
2627
import { listStacksHandler } from '../handlers/StackHandler';
2728
import {
@@ -82,6 +83,7 @@ export class CfnServer {
8283
this.features.resourceHandlers.onRefreshResourceList(refreshResourceListHandler(this.components));
8384
this.features.resourceHandlers.onGetResourceTypes(getResourceTypesHandler(this.components));
8485
this.features.resourceHandlers.onResourceStateImport(importResourceStateHandler(this.components));
86+
this.features.resourceHandlers.onStackMgmtInfo(getStackMgmtInfo(this.components));
8587
}
8688

8789
async close(): Promise<void> {

0 commit comments

Comments
 (0)