diff --git a/public/app/plugins/datasource/tempo/datasource.test.ts b/public/app/plugins/datasource/tempo/datasource.test.ts index cc80ddf516d..d2eb0ee69ca 100644 --- a/public/app/plugins/datasource/tempo/datasource.test.ts +++ b/public/app/plugins/datasource/tempo/datasource.test.ts @@ -864,7 +864,7 @@ describe('Tempo service graph view', () => { operator: '=', scope: 'resource', tag: 'service.name', - value: 'my-service', + value: 'my-target-service', valueType: 'string', }, ], @@ -961,7 +961,7 @@ describe('Tempo service graph view', () => { operator: '=', scope: 'resource', tag: 'service.namespace', - value: 'my-namespace', + value: 'my-target-namespace-service', valueType: 'string', }, { @@ -969,7 +969,7 @@ describe('Tempo service graph view', () => { operator: '=', scope: 'resource', tag: 'service.name', - value: 'my-service', + value: 'my-target-name-service', valueType: 'string', }, ], @@ -1495,7 +1495,10 @@ const serviceGraphLinks = [ const replaceVariablesInstrumented = (variable: string): string => { const variables: Record = { - [`\${__data.fields.${NodeGraphDataFrameFieldNames.title}}`]: 'my-service', + [`\${__data.fields.${NodeGraphDataFrameFieldNames.id}}`]: 'my-service', + [`\${__data.fields.${NodeGraphDataFrameFieldNames.target}}`]: 'my-target-service', + [`\${__data.fields.targetName}`]: 'my-target-name-service', + [`\${__data.fields.targetNamespace}`]: 'my-target-namespace-service', [`\${__data.fields.${NodeGraphDataFrameFieldNames.subTitle}}`]: 'my-namespace', [`\${__data.fields.${NodeGraphDataFrameFieldNames.isInstrumented}}`]: 'true', }; @@ -1504,7 +1507,7 @@ const replaceVariablesInstrumented = (variable: string): string => { const replaceVariablesUninstrumented = (variable: string): string => { const variables: Record = { - [`\${__data.fields.${NodeGraphDataFrameFieldNames.title}}`]: 'my-service', + [`\${__data.fields.${NodeGraphDataFrameFieldNames.id}}`]: 'my-service', [`\${__data.fields.${NodeGraphDataFrameFieldNames.subTitle}}`]: 'my-namespace', [`\${__data.fields.${NodeGraphDataFrameFieldNames.isInstrumented}}`]: 'false', }; diff --git a/public/app/plugins/datasource/tempo/datasource.ts b/public/app/plugins/datasource/tempo/datasource.ts index 618f1b642d5..2f7c458a207 100644 --- a/public/app/plugins/datasource/tempo/datasource.ts +++ b/public/app/plugins/datasource/tempo/datasource.ts @@ -1177,7 +1177,12 @@ export function getFieldConfig( datasourceUid, false ), - makeTempoLinkServiceMap('View traces', tempoDatasourceUid, !!namespaceFields?.targetNamespace), + makeTempoLinkServiceMap( + 'View traces', + namespaceFields !== undefined ? `\${${namespaceFields.targetNamespace}}` : '', + `\${${targetField}}`, + tempoDatasourceUid + ), ], }; } @@ -1234,8 +1239,9 @@ export function makeTempoLink( function makeTempoLinkServiceMap( title: string, - datasourceUid: string, - includeNamespace: boolean + serviceNamespaceVar: string | undefined, + serviceNameVar: string, + datasourceUid: string ): DataLink { return { url: '', @@ -1244,11 +1250,8 @@ function makeTempoLinkServiceMap( datasourceUid, datasourceName: getDataSourceSrv().getInstanceSettings(datasourceUid)?.name ?? '', query: ({ replaceVariables, scopedVars }) => { - const serviceName = replaceVariables?.(`\${__data.fields.${NodeGraphDataFrameFieldNames.title}}`, scopedVars); - const serviceNamespace = replaceVariables?.( - `\${__data.fields.${NodeGraphDataFrameFieldNames.subTitle}}`, - scopedVars - ); + const serviceName = replaceVariables?.(serviceNameVar, scopedVars); + const serviceNamespace = serviceNamespaceVar ? replaceVariables?.(serviceNamespaceVar, scopedVars) : undefined; const isInstrumented = replaceVariables?.(`\${__data.fields.${NodeGraphDataFrameFieldNames.isInstrumented}}`, scopedVars) !== 'false'; @@ -1262,7 +1265,7 @@ function makeTempoLinkServiceMap( query.queryType = 'traceql'; query.query = `{${filters}}`; } else { - if (includeNamespace && serviceNamespace) { + if (serviceNamespace) { query.filters.push({ id: 'service-namespace', scope: TraceqlSearchScope.Resource,