11import { CloudFormationServiceException } from '@aws-sdk/client-cloudformation' ;
22import { CfnService } from '../services/CfnService' ;
33import { LoggerFactory } from '../telemetry/LoggerFactory' ;
4+ import { ScopedTelemetry } from '../telemetry/ScopedTelemetry' ;
5+ import { Telemetry , Measure } from '../telemetry/TelemetryDecorator' ;
46
57export type ResourceStackManagementResult = {
68 physicalResourceId : string ;
@@ -13,15 +15,23 @@ export type ResourceStackManagementResult = {
1315const log = LoggerFactory . getLogger ( 'StackManagementInfoProvider' ) ;
1416
1517export class StackManagementInfoProvider {
18+ @Telemetry ( ) private readonly telemetry ! : ScopedTelemetry ;
19+
1620 constructor ( private readonly cfnService : CfnService ) { }
1721
22+ @Measure ( { name : 'getResourceManagementState' } )
1823 public async getResourceManagementState ( physicalResourceId : string ) : Promise < ResourceStackManagementResult > {
24+ this . telemetry . count ( 'managed' , 0 ) ;
25+ this . telemetry . count ( 'unmanaged' , 0 ) ;
26+ this . telemetry . count ( 'unknown' , 0 ) ;
27+
1928 try {
2029 const description = await this . cfnService . describeStackResources ( {
2130 PhysicalResourceId : physicalResourceId ,
2231 } ) ;
2332 const firstObservedStackResource = description . StackResources ?. at ( 0 ) ;
2433 if ( firstObservedStackResource ) {
34+ this . telemetry . count ( 'managed' , 1 ) ;
2535 return {
2636 physicalResourceId : physicalResourceId ,
2737 managedByStack : true ,
@@ -37,6 +47,7 @@ export class StackManagementInfoProvider {
3747 error . message . includes ( `Stack for ${ physicalResourceId } does not exist` )
3848 ) {
3949 log . info ( error . message ) ;
50+ this . telemetry . count ( 'unmanaged' , 1 ) ;
4051 return {
4152 physicalResourceId : physicalResourceId ,
4253 managedByStack : false ,
@@ -47,6 +58,7 @@ export class StackManagementInfoProvider {
4758 }
4859 const errMsg = 'Unexpected response from CloudFormation Describe Stack Resources with empty resource list' ;
4960 log . error ( `DescribeStackResources for ${ physicalResourceId } failed: ${ errMsg } ` ) ;
61+ this . telemetry . count ( 'unknown' , 1 ) ;
5062 return {
5163 physicalResourceId : physicalResourceId ,
5264 managedByStack : undefined ,
0 commit comments