UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

50 lines 9.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createLoadBalancerMetricFactory = void 0; const ApplicationLoadBalancerMetricFactory_1 = require("./ApplicationLoadBalancerMetricFactory"); const NetworkLoadBalancerMetricFactory_1 = require("./NetworkLoadBalancerMetricFactory"); // It's not possible to use instanceOf with typescript interfaces, so we have to use type guards to differentiate // between the interfaces. As another problem, the LoadBalancer/TargetGroup for both Network and Application types // don't have distinguished fields that could be used to differentiate between both types, so we resort to using // checking for unique methods in their metrics interfaces. function isApplicationLoadBalancer(loadBalancer) { return !!loadBalancer.metrics.httpRedirectCount; } function isNetworkLoadBalancer(loadBalancer) { return !isApplicationLoadBalancer(loadBalancer); } function isApplicationTargetGroup(targetGroup) { return !!targetGroup.metrics.httpCodeTarget; } function isNetworkTargetGroup(targetGroup) { return !isApplicationTargetGroup(targetGroup); } /** * Factory method to create appropriate metric factory based on the load balancer and target group type. * @param metricFactory metric factory * @param loadBalancer load balancer * @param targetGroup target group */ function createLoadBalancerMetricFactory(metricFactory, loadBalancer, targetGroup, invertStatisticsOfTaskCountEnabled) { if (isNetworkLoadBalancer(loadBalancer) && isNetworkTargetGroup(targetGroup)) { return new NetworkLoadBalancerMetricFactory_1.NetworkLoadBalancerMetricFactory(metricFactory, { networkLoadBalancer: loadBalancer, networkTargetGroup: targetGroup, invertStatisticsOfTaskCountEnabled: invertStatisticsOfTaskCountEnabled, }); } else if (isApplicationLoadBalancer(loadBalancer) && isApplicationTargetGroup(targetGroup)) { return new ApplicationLoadBalancerMetricFactory_1.ApplicationLoadBalancerMetricFactory(metricFactory, { applicationLoadBalancer: loadBalancer, applicationTargetGroup: targetGroup, invertStatisticsOfTaskCountEnabled: invertStatisticsOfTaskCountEnabled, }); } else { throw new Error("Invalid type of load balancer or target group (only ALB and NLB are supported)."); } } exports.createLoadBalancerMetricFactory = createLoadBalancerMetricFactory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZEJhbGFuY2VyTWV0cmljRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkxvYWRCYWxhbmNlck1ldHJpY0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsaUdBQThGO0FBQzlGLHlGQUFzRjtBQUd0RixpSEFBaUg7QUFDakgsa0hBQWtIO0FBQ2xILGdIQUFnSDtBQUNoSCwyREFBMkQ7QUFDM0QsU0FBUyx5QkFBeUIsQ0FDaEMsWUFBNkQ7SUFFN0QsT0FBTyxDQUFDLENBQUUsWUFBWSxDQUFDLE9BQWUsQ0FBQyxpQkFBaUIsQ0FBQztBQUMzRCxDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsQ0FDNUIsWUFBNkQ7SUFFN0QsT0FBTyxDQUFDLHlCQUF5QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUMvQixXQUEwRDtJQUUxRCxPQUFPLENBQUMsQ0FBRSxXQUFXLENBQUMsT0FBZSxDQUFDLGNBQWMsQ0FBQztBQUN2RCxDQUFDO0FBQ0QsU0FBUyxvQkFBb0IsQ0FDM0IsV0FBMEQ7SUFFMUQsT0FBTyxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLCtCQUErQixDQUM3QyxhQUE0QixFQUM1QixZQUE2RCxFQUM3RCxXQUEwRCxFQUMxRCxrQ0FBNEM7SUFFNUMsSUFDRSxxQkFBcUIsQ0FBQyxZQUFZLENBQUM7UUFDbkMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLEVBQ2pDO1FBQ0EsT0FBTyxJQUFJLG1FQUFnQyxDQUFDLGFBQWEsRUFBRTtZQUN6RCxtQkFBbUIsRUFBRSxZQUFZO1lBQ2pDLGtCQUFrQixFQUFFLFdBQVc7WUFDL0Isa0NBQWtDLEVBQUUsa0NBQWtDO1NBQ3ZFLENBQUMsQ0FBQztLQUNKO1NBQU0sSUFDTCx5QkFBeUIsQ0FBQyxZQUFZLENBQUM7UUFDdkMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLEVBQ3JDO1FBQ0EsT0FBTyxJQUFJLDJFQUFvQyxDQUFDLGFBQWEsRUFBRTtZQUM3RCx1QkFBdUIsRUFBRSxZQUFZO1lBQ3JDLHNCQUFzQixFQUFFLFdBQVc7WUFDbkMsa0NBQWtDLEVBQUUsa0NBQWtDO1NBQ3ZFLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCxNQUFNLElBQUksS0FBSyxDQUNiLGlGQUFpRixDQUNsRixDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBN0JELDBFQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgSUFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAsXG4gIElOZXR3b3JrTG9hZEJhbGFuY2VyLFxuICBJTmV0d29ya1RhcmdldEdyb3VwLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjJcIjtcblxuaW1wb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNGYWN0b3J5IH0gZnJvbSBcIi4vQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNGYWN0b3J5XCI7XG5pbXBvcnQgeyBOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljRmFjdG9yeSB9IGZyb20gXCIuL05ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNGYWN0b3J5XCI7XG5pbXBvcnQgeyBNZXRyaWNGYWN0b3J5LCBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0IH0gZnJvbSBcIi4uLy4uL2NvbW1vblwiO1xuXG4vLyBJdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgaW5zdGFuY2VPZiB3aXRoIHR5cGVzY3JpcHQgaW50ZXJmYWNlcywgc28gd2UgaGF2ZSB0byB1c2UgdHlwZSBndWFyZHMgdG8gZGlmZmVyZW50aWF0ZVxuLy8gYmV0d2VlbiB0aGUgaW50ZXJmYWNlcy4gQXMgYW5vdGhlciBwcm9ibGVtLCB0aGUgTG9hZEJhbGFuY2VyL1RhcmdldEdyb3VwIGZvciBib3RoIE5ldHdvcmsgYW5kIEFwcGxpY2F0aW9uIHR5cGVzXG4vLyBkb24ndCBoYXZlIGRpc3Rpbmd1aXNoZWQgZmllbGRzIHRoYXQgY291bGQgYmUgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYm90aCB0eXBlcywgc28gd2UgcmVzb3J0IHRvIHVzaW5nXG4vLyBjaGVja2luZyBmb3IgdW5pcXVlIG1ldGhvZHMgaW4gdGhlaXIgbWV0cmljcyBpbnRlcmZhY2VzLlxuZnVuY3Rpb24gaXNBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcihcbiAgbG9hZEJhbGFuY2VyOiBJTmV0d29ya0xvYWRCYWxhbmNlciB8IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbik6IGxvYWRCYWxhbmNlciBpcyBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIge1xuICByZXR1cm4gISEobG9hZEJhbGFuY2VyLm1ldHJpY3MgYXMgYW55KS5odHRwUmVkaXJlY3RDb3VudDtcbn1cbmZ1bmN0aW9uIGlzTmV0d29ya0xvYWRCYWxhbmNlcihcbiAgbG9hZEJhbGFuY2VyOiBJTmV0d29ya0xvYWRCYWxhbmNlciB8IElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbik6IGxvYWRCYWxhbmNlciBpcyBJTmV0d29ya0xvYWRCYWxhbmNlciB7XG4gIHJldHVybiAhaXNBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcihsb2FkQmFsYW5jZXIpO1xufVxuXG5mdW5jdGlvbiBpc0FwcGxpY2F0aW9uVGFyZ2V0R3JvdXAoXG4gIHRhcmdldEdyb3VwOiBJTmV0d29ya1RhcmdldEdyb3VwIHwgSUFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAsXG4pOiB0YXJnZXRHcm91cCBpcyBJQXBwbGljYXRpb25UYXJnZXRHcm91cCB7XG4gIHJldHVybiAhISh0YXJnZXRHcm91cC5tZXRyaWNzIGFzIGFueSkuaHR0cENvZGVUYXJnZXQ7XG59XG5mdW5jdGlvbiBpc05ldHdvcmtUYXJnZXRHcm91cChcbiAgdGFyZ2V0R3JvdXA6IElOZXR3b3JrVGFyZ2V0R3JvdXAgfCBJQXBwbGljYXRpb25UYXJnZXRHcm91cCxcbik6IHRhcmdldEdyb3VwIGlzIElOZXR3b3JrVGFyZ2V0R3JvdXAge1xuICByZXR1cm4gIWlzQXBwbGljYXRpb25UYXJnZXRHcm91cCh0YXJnZXRHcm91cCk7XG59XG5cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGFwcHJvcHJpYXRlIG1ldHJpYyBmYWN0b3J5IGJhc2VkIG9uIHRoZSBsb2FkIGJhbGFuY2VyIGFuZCB0YXJnZXQgZ3JvdXAgdHlwZS5cbiAqIEBwYXJhbSBtZXRyaWNGYWN0b3J5IG1ldHJpYyBmYWN0b3J5XG4gKiBAcGFyYW0gbG9hZEJhbGFuY2VyIGxvYWQgYmFsYW5jZXJcbiAqIEBwYXJhbSB0YXJnZXRHcm91cCB0YXJnZXQgZ3JvdXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvYWRCYWxhbmNlck1ldHJpY0ZhY3RvcnkoXG4gIG1ldHJpY0ZhY3Rvcnk6IE1ldHJpY0ZhY3RvcnksXG4gIGxvYWRCYWxhbmNlcjogSU5ldHdvcmtMb2FkQmFsYW5jZXIgfCBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIsXG4gIHRhcmdldEdyb3VwOiBJTmV0d29ya1RhcmdldEdyb3VwIHwgSUFwcGxpY2F0aW9uVGFyZ2V0R3JvdXAsXG4gIGludmVydFN0YXRpc3RpY3NPZlRhc2tDb3VudEVuYWJsZWQ/OiBib29sZWFuLFxuKTogSUxvYWRCYWxhbmNlck1ldHJpY0ZhY3Rvcnkge1xuICBpZiAoXG4gICAgaXNOZXR3b3JrTG9hZEJhbGFuY2VyKGxvYWRCYWxhbmNlcikgJiZcbiAgICBpc05ldHdvcmtUYXJnZXRHcm91cCh0YXJnZXRHcm91cClcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljRmFjdG9yeShtZXRyaWNGYWN0b3J5LCB7XG4gICAgICBuZXR3b3JrTG9hZEJhbGFuY2VyOiBsb2FkQmFsYW5jZXIsXG4gICAgICBuZXR3b3JrVGFyZ2V0R3JvdXA6IHRhcmdldEdyb3VwLFxuICAgICAgaW52ZXJ0U3RhdGlzdGljc09mVGFza0NvdW50RW5hYmxlZDogaW52ZXJ0U3RhdGlzdGljc09mVGFza0NvdW50RW5hYmxlZCxcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChcbiAgICBpc0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKGxvYWRCYWxhbmNlcikgJiZcbiAgICBpc0FwcGxpY2F0aW9uVGFyZ2V0R3JvdXAodGFyZ2V0R3JvdXApXG4gICkge1xuICAgIHJldHVybiBuZXcgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNGYWN0b3J5KG1ldHJpY0ZhY3RvcnksIHtcbiAgICAgIGFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyOiBsb2FkQmFsYW5jZXIsXG4gICAgICBhcHBsaWNhdGlvblRhcmdldEdyb3VwOiB0YXJnZXRHcm91cCxcbiAgICAgIGludmVydFN0YXRpc3RpY3NPZlRhc2tDb3VudEVuYWJsZWQ6IGludmVydFN0YXRpc3RpY3NPZlRhc2tDb3VudEVuYWJsZWQsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJJbnZhbGlkIHR5cGUgb2YgbG9hZCBiYWxhbmNlciBvciB0YXJnZXQgZ3JvdXAgKG9ubHkgQUxCIGFuZCBOTEIgYXJlIHN1cHBvcnRlZCkuXCIsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEJhc2Ugb2YgTW9uaXRvcmluZyBwcm9wcyBmb3IgbG9hZC1iYWxhbmNlciBtZXRyaWMgZmFjdG9yaWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VMb2FkQmFsYW5jZXJNZXRyaWNGYWN0b3J5UHJvcHMge1xuICAvKipcbiAgICogSW52ZXJ0IHRoZSBzdGF0aXN0aWNzIG9mIGBIZWFsdGh5SG9zdENvdW50YCBhbmQgYFVuSGVhbHRoeUhvc3RDb3VudGAuXG4gICAqXG4gICAqIFdoZW4gYGludmVydFN0YXRpc3RpY3NPZlRhc2tDb3VudEVuYWJsZWRgIGlzIHNldCB0byBmYWxzZSwgdGhlIG1pbmltdW0gb2YgYEhlYWx0aHlIb3N0Q291bnRgIGFuZCB0aGUgbWF4aW11bSBvZiBgVW5IZWFsdGh5SG9zdENvdW50YCBhcmUgbW9uaXRvcmVkLlxuICAgKiBXaGVuIGBpbnZlcnRTdGF0aXN0aWNzT2ZUYXNrQ291bnRFbmFibGVkYCBpcyBzZXQgdG8gdHJ1ZSwgdGhlIG1heGltdW0gb2YgYEhlYWx0aHlIb3N0Q291bnRgIGFuZCB0aGUgbWluaW11bSBvZiBgVW5IZWFsdGh5SG9zdENvdW50YCBhcmUgbW9uaXRvcmVkLlxuICAgKlxuICAgKiBgaW52ZXJ0U3RhdGlzdGljc09mVGFza0NvdW50RW5hYmxlZGAgaXMgcmVjb21tZW5kZWQgdG8gc2V0IHRvIHRydWUgYXMgcGVyIHRoZSBndWlkZWxpbmVzIGF0XG5odHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZWxhc3RpY2xvYWRiYWxhbmNpbmcvbGF0ZXN0L25ldHdvcmsvbG9hZC1iYWxhbmNlci1jbG91ZHdhdGNoLW1ldHJpY3MuaHRtbCNtZXRyaWMtc3RhdGlzdGljc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW52ZXJ0U3RhdGlzdGljc09mVGFza0NvdW50RW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29tbW9uIGludGVyZmFjZSBmb3IgbG9hZC1iYWxhbmNlciBiYXNlZCBzZXJ2aWNlIG1ldHJpYyBmYWN0b3JpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxvYWRCYWxhbmNlck1ldHJpY0ZhY3Rvcnkge1xuICBtZXRyaWNIZWFsdGh5VGFza0NvdW50KCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQ7XG5cbiAgbWV0cmljVW5oZWFsdGh5VGFza0NvdW50KCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQ7XG5cbiAgbWV0cmljSGVhbHRoeVRhc2tJblBlcmNlbnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydDtcblxuICBtZXRyaWNBY3RpdmVDb25uZWN0aW9uQ291bnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydDtcblxuICBtZXRyaWNOZXdDb25uZWN0aW9uQ291bnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydDtcblxuICBtZXRyaWNVbmhlYWx0aHlSb3V0aW5nQ291bnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydDtcblxuICBtZXRyaWNQcm9jZXNzZWRCeXRlc01pbigpOiBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0O1xufVxuIl19