All files / src/resolvers TargetResolverFactory.ts

95% Statements 19/20
100% Branches 0/0
66.67% Functions 2/3
95% Lines 19/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 472x 2x 2x   2x 2x 2x 2x 2x 2x 2x   2x             1x       1x             1x 1x 1x 1x 1x         1x              
import { ConfigServiceClient } from "@aws-sdk/client-config-service";
import { StandardRetryStrategy } from "@aws-sdk/middleware-retry";
import { exponentialBackOffDelayDecider, getDefaultRetryQuota } from "../RetryStrategyConfiguration";
import { LoggerFactory } from "../logger-factory";
import { TargetDefinitionResolver } from "./TargetDefinitionResolver";
import { AsgTargetResolver } from "./objects/AsgTargetResolver";
import { Ec2TargetResolver } from "./objects/Ec2TargetResolver";
import { NetworkTargetResolver } from "./objects/NetworkTargetResolver";
import { TaggedTargetResolver } from "./objects/TaggedTargetResolver";
import AWSXRay from 'aws-xray-sdk';
import { SimpleTargetResolver } from "./objects/SimpleTargetResolver";
 
export class TargetResolverFactory {
    private ec2ObjectResolver: Ec2TargetResolver;
    private networkObjectResolver: NetworkTargetResolver;
    private asgObjectResolver: AsgTargetResolver;
    private taggedObjectResolver: TaggedTargetResolver;
    private configServiceClient: ConfigServiceClient;
    private simpleObjectResolver: SimpleTargetResolver;
    constructor(private loggerFactory: LoggerFactory,
        region: string,
        defaultAggregator: string,
    ) {
        this.configServiceClient = AWSXRay.captureAWSv3Client(new ConfigServiceClient({
            region: region,
            retryStrategy: new StandardRetryStrategy(() => Promise.resolve(10), {
                delayDecider: exponentialBackOffDelayDecider,
                retryQuota: getDefaultRetryQuota(1000, { retryCost: 1, timeoutRetryCost: 5 })
            })
        }) as any)
        this.ec2ObjectResolver = new Ec2TargetResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.networkObjectResolver = new NetworkTargetResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.asgObjectResolver = new AsgTargetResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.taggedObjectResolver = new TaggedTargetResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.simpleObjectResolver = new SimpleTargetResolver(loggerFactory);
    }
 
 
    createTargetDefinitionResolver(): TargetDefinitionResolver {
        return new TargetDefinitionResolver(this.loggerFactory,
            this.ec2ObjectResolver,
            this.networkObjectResolver,
            this.asgObjectResolver,
            this.taggedObjectResolver,
            this.simpleObjectResolver);
    }
}