14
14
* limitations under the License.
15
15
*/
16
16
import { dtFetch } from '../utils' ;
17
- import { getRootLogger } from '@backstage/backend-common ' ;
17
+ import { LoggerService } from '@backstage/backend-plugin-api ' ;
18
18
import { TabularData } from '@dynatrace/backstage-plugin-dql-common' ;
19
19
20
20
export type DynatraceEnvironmentConfig = {
@@ -59,7 +59,6 @@ export type PollQueryResponse<RecordType> = {
59
59
} ;
60
60
} ;
61
61
62
- const logger = getRootLogger ( ) . child ( { plugin : 'dql-backend' } ) ;
63
62
const DEFAULT_TOKEN_URL = 'https://sso.dynatrace.com/sso/oauth2/token' ;
64
63
65
64
const executeQuery = async (
@@ -84,6 +83,7 @@ const executeQuery = async (
84
83
const pollQuery = async < T > (
85
84
{ url, accessToken, identifier } : DynatraceAccessInfo ,
86
85
requestToken : string ,
86
+ logger : LoggerService ,
87
87
) : Promise < PollQueryResponse < T > > => {
88
88
const fullUrl = new URL ( 'platform/storage/query/v1/query:poll' , url ) ;
89
89
fullUrl . searchParams . set ( 'request-token' , requestToken ) ;
@@ -105,20 +105,23 @@ const pollQuery = async <T>(
105
105
const waitForQueryResult = async < RecordType > (
106
106
accessInfo : DynatraceAccessInfo ,
107
107
requestToken : string ,
108
+ logger : LoggerService ,
108
109
) : Promise < RecordType [ ] > => {
109
110
let pollQueryRes : PollQueryResponse < RecordType > = await pollQuery (
110
111
accessInfo ,
111
112
requestToken ,
113
+ logger ,
112
114
) ;
113
115
while ( pollQueryRes . state !== 'SUCCEEDED' ) {
114
- pollQueryRes = await pollQuery ( accessInfo , requestToken ) ;
116
+ pollQueryRes = await pollQuery ( accessInfo , requestToken , logger ) ;
115
117
}
116
118
return pollQueryRes . result . records ;
117
119
} ;
118
120
119
121
const getAccessToken = async (
120
122
config : DynatraceEnvironmentConfig ,
121
123
identifier : string ,
124
+ logger : LoggerService ,
122
125
) : Promise < TokenResponse > => {
123
126
const body = new URLSearchParams ( {
124
127
grant_type : 'client_credentials' ,
@@ -152,6 +155,7 @@ export class DynatraceApi {
152
155
constructor (
153
156
private readonly config : DynatraceEnvironmentConfig ,
154
157
private identifier : string ,
158
+ private logger : LoggerService ,
155
159
) { }
156
160
157
161
get environmentName ( ) {
@@ -163,14 +167,22 @@ export class DynatraceApi {
163
167
}
164
168
165
169
async executeDqlQuery ( query : string ) : Promise < TabularData > {
166
- const tokenResponse = await getAccessToken ( this . config , this . identifier ) ;
170
+ const tokenResponse = await getAccessToken (
171
+ this . config ,
172
+ this . identifier ,
173
+ this . logger ,
174
+ ) ;
167
175
const environment : DynatraceAccessInfo = {
168
176
url : this . config . url ,
169
177
accessToken : tokenResponse . access_token ,
170
178
identifier : this . identifier ,
171
179
} ;
172
180
173
181
const execQueryRes = await executeQuery ( environment , query ) ;
174
- return await waitForQueryResult ( environment , execQueryRes . requestToken ) ;
182
+ return await waitForQueryResult (
183
+ environment ,
184
+ execQueryRes . requestToken ,
185
+ this . logger ,
186
+ ) ;
175
187
}
176
188
}
0 commit comments