All files / src/resolvers OjbectResolverFactory.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 "./ObjectDefinitionResolver";
import { AsgObjectResolver } from "./objects/AsgObjectResolver";
import { Ec2ObjectResolver } from "./objects/Ec2ObjectResolver";
import { NetworkObjectResolver } from "./objects/NetworkObjectResolver";
import { TaggedObjectResolver } from "./objects/TaggedObjectResolver";
import AWSXRay from 'aws-xray-sdk';
import { SimpleObjectResolver } from "./objects/SimpleObjectResolver";
 
export class TargetResolverFactory {
    private ec2ObjectResolver: Ec2ObjectResolver;
    private networkObjectResolver: NetworkObjectResolver;
    private asgObjectResolver: AsgObjectResolver;
    private taggedObjectResolver: TaggedObjectResolver;
    private configServiceClient: ConfigServiceClient;
    private simpleObjectResolver: SimpleObjectResolver;
    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 Ec2ObjectResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.networkObjectResolver = new NetworkObjectResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.asgObjectResolver = new AsgObjectResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.taggedObjectResolver = new TaggedObjectResolver(loggerFactory, this.configServiceClient, defaultAggregator);
        this.simpleObjectResolver = new SimpleObjectResolver(loggerFactory);
    }
 
 
    createObjectDefinitionResolver(): TargetDefinitionResolver {
        return new TargetDefinitionResolver(this.loggerFactory,
            this.ec2ObjectResolver,
            this.networkObjectResolver,
            this.asgObjectResolver,
            this.taggedObjectResolver,
            this.simpleObjectResolver);
    }
}