UNPKG

@spotinst/spinnaker-deck

Version:

Spinnaker-Deck service, forked with support to Spotinst

63 lines (53 loc) 2.27 kB
import { IQService, module } from 'angular'; import { REST } from 'core/api/ApiService'; import { ILoadBalancer, ILoadBalancerSourceData } from 'core/domain'; import { IComponentName, NameUtils } from 'core/naming'; import { CORE_LOADBALANCER_LOADBALANCER_TRANSFORMER } from './loadBalancer.transformer'; export interface ILoadBalancersByAccount { name: string; accounts: Array<{ name: string; regions: Array<{ name: string; loadBalancers: ILoadBalancerSourceData[]; }>; }>; } export class LoadBalancerReader { public static $inject = ['$q', 'loadBalancerTransformer']; public constructor(private $q: IQService, private loadBalancerTransformer: any) {} public loadLoadBalancers(applicationName: string): PromiseLike<ILoadBalancerSourceData[]> { return REST('/applications') .path(applicationName, 'loadBalancers') .get() .then((loadBalancers: ILoadBalancerSourceData[]) => { loadBalancers = this.loadBalancerTransformer.normalizeLoadBalancerSet(loadBalancers); return this.$q.all(loadBalancers.map((lb) => this.normalizeLoadBalancer(lb))); }); } public getLoadBalancerDetails( cloudProvider: string, account: string, region: string, name: string, ): PromiseLike<ILoadBalancerSourceData[]> { return REST('/loadBalancers').path(account, region, name).query({ provider: cloudProvider }).get(); } public listLoadBalancers(cloudProvider: string): PromiseLike<ILoadBalancersByAccount[]> { return REST('/loadBalancers').query({ provider: cloudProvider }).get(); } private normalizeLoadBalancer(loadBalancer: ILoadBalancerSourceData): PromiseLike<ILoadBalancer> { return this.loadBalancerTransformer.normalizeLoadBalancer(loadBalancer).then((lb: ILoadBalancer) => { const nameParts: IComponentName = NameUtils.parseLoadBalancerName(lb.name); lb.stack = nameParts.stack; lb.detail = nameParts.freeFormDetails; lb.cloudProvider = lb.cloudProvider || lb.type || lb.provider; return lb; }); } } export const LOAD_BALANCER_READ_SERVICE = 'spinnaker.core.loadBalancer.read.service'; module(LOAD_BALANCER_READ_SERVICE, [CORE_LOADBALANCER_LOADBALANCER_TRANSFORMER]).service( 'loadBalancerReader', LoadBalancerReader, );