1+ import CloudGraph from '@cloudgraph/sdk'
2+ import { MonitorClient , LogProfileResource } from '@azure/arm-monitor'
3+ import { PagedAsyncIterableIterator } from '@azure/core-paging'
4+ import azureLoggerText from '../../properties/logger'
5+ import { AzureServiceInput , TagMap } from '../../types'
6+ import { tryCatchWrapper } from '../../utils'
7+ import { regionMap } from '../../enums/regions'
8+
9+ const { logger } = CloudGraph
10+ const lt = { ...azureLoggerText }
11+ const serviceName = 'Log Profiles'
12+
13+ export interface RawAzureLogProfileResource
14+ extends Omit < LogProfileResource , 'location' | 'tags' > {
15+ region : string
16+ Tags : TagMap
17+ }
18+
19+ export default async ( {
20+ config,
21+ } : AzureServiceInput ) : Promise < {
22+ [ property : string ] : RawAzureLogProfileResource [ ]
23+ } > => {
24+ try {
25+ const { tokenCredentials, subscriptionId } = config
26+ const client = new MonitorClient ( tokenCredentials , subscriptionId )
27+ const logProfiles : RawAzureLogProfileResource [ ] = [ ]
28+ const result = { global : [ ] }
29+ await tryCatchWrapper (
30+ async ( ) => {
31+ const logProfilesIterable : PagedAsyncIterableIterator < LogProfileResource > =
32+ client . logProfiles . list ( )
33+ for await ( const logProfile of logProfilesIterable ) {
34+ if ( logProfile ) {
35+ const { tags, ...rest } = logProfile
36+ const region = regionMap . global
37+ logProfiles . push ( {
38+ ...rest ,
39+ region,
40+ Tags : tags || { } ,
41+ } )
42+ }
43+ }
44+ } ,
45+ {
46+ service : serviceName ,
47+ client,
48+ scope : 'logProfiles' ,
49+ operation : 'list' ,
50+ }
51+ )
52+ logger . debug ( lt . foundLogProfiles ( logProfiles . length ) )
53+
54+ logProfiles . map ( ( { region, ...rest } ) => {
55+ result . global . push ( {
56+ ...rest ,
57+ region,
58+ } )
59+ } )
60+ return result
61+ } catch ( e ) {
62+ logger . error ( e )
63+ return { }
64+ }
65+ }
0 commit comments