All files / modules/85-cv/pages/health-source/connectors/GCOLogsMonitoringSource GoogleCloudOperationsMonitoringSourceUtils.ts

33.33% Statements 5/15
0% Branches 0/68
0% Functions 0/3
35.71% Lines 5/14

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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61              28x     28x   28x                           28x                               28x                                    
/*
 * Copyright 2021 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Shield 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
 */
 
import { isEmpty } from 'lodash-es'
import type { ProjectPathProps } from '@common/interfaces/RouteInterfaces'
import type { MapGCOLogsQueryToService } from './components/MapQueriesToHarnessService/types'
import { HealthSourceTypes } from '../../types'
 
export const GCOProduct = {
  CLOUD_METRICS: 'Cloud Metrics',
  CLOUD_LOGS: 'Cloud Logs'
}
export interface GCOMonitoringSourceInfo {
  name?: string
  identifier?: string
  connectorRef?: string
  isEdit?: boolean
  product: string
  type: string
  mappedServicesAndEnvs: Map<string, MapGCOLogsQueryToService>
}
 
export function buildGCOMonitoringSourceInfo(
  params: ProjectPathProps,
  data: any
): GCOMonitoringSourceInfo & ProjectPathProps {
  return {
    ...params,
    name: data?.healthSourceName,
    identifier: data?.healthSourceIdentifier,
    connectorRef: data?.connectorRef,
    isEdit: data?.isEdit,
    product: data?.product,
    type: HealthSourceTypes.StackdriverLog,
    mappedServicesAndEnvs: getMappedServicesAndEnvs(data)
  }
}
 
const getMappedServicesAndEnvs = (data: any): Map<string, MapGCOLogsQueryToService> => {
  const currentHealthSource = data?.healthSourceList?.find((el: any) => el?.identifier === data?.healthSourceIdentifier)
  const mappedQueries = currentHealthSource?.spec?.queries
  if (currentHealthSource && !isEmpty(mappedQueries)) {
    const mappedServicesAndEnvs = new Map<string, MapGCOLogsQueryToService>()
    for (const query of mappedQueries) {
      mappedServicesAndEnvs.set(query?.name, {
        metricName: query?.name,
        serviceInstance: query?.serviceInstanceIdentifier,
        messageIdentifier: query?.messageIdentifier,
        query: query?.query
      })
    }
    return mappedServicesAndEnvs
  } else {
    return new Map<string, MapGCOLogsQueryToService>()
  }
}