From 4eb5e64758f8fb570b70475b94f89b97bebd13cd Mon Sep 17 00:00:00 2001 From: Chris Cowan Date: Mon, 17 Dec 2018 14:25:53 -0700 Subject: [PATCH] [Infra UI]Adding linking support for APM (#27319) * Fixes #26620 - Adding linking support for APM * Fixing some weird merge artifacts * Finalizing URL linking to APM --- .../components/waffle/node_context_menu.tsx | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/x-pack/plugins/infra/public/components/waffle/node_context_menu.tsx b/x-pack/plugins/infra/public/components/waffle/node_context_menu.tsx index 4605a2ca3834..9da80d6fa409 100644 --- a/x-pack/plugins/infra/public/components/waffle/node_context_menu.tsx +++ b/x-pack/plugins/infra/public/components/waffle/node_context_menu.tsx @@ -25,23 +25,43 @@ interface Props { export const NodeContextMenu = injectI18n( ({ options, timeRange, children, node, isPopoverOpen, closePopover, nodeType, intl }: Props) => { - const nodeId = node.path.length > 0 ? node.path[node.path.length - 1].value : undefined; - const nodeLogsUrl = nodeId + // Due to the changing nature of the fields between APM and this UI, + // We need to have some exceptions until 7.0 & ECS is finalized. Reference + // #26620 for the details for these fields. + // TODO: This is tech debt, remove it after 7.0 & ECS migration. + const APM_FIELDS = { + [InfraNodeType.host]: 'context.system.hostname', + [InfraNodeType.container]: 'container.id', + [InfraNodeType.pod]: 'kubernetes.pod.uid', + }; + + const nodeLogsUrl = node.id ? getNodeLogsUrl({ nodeType, - nodeId, + nodeId: node.id, time: timeRange.to, }) : undefined; - const nodeDetailUrl = nodeId + const nodeDetailUrl = node.id ? getNodeDetailUrl({ nodeType, - nodeId, + nodeId: node.id, from: timeRange.from, to: timeRange.to, }) : undefined; + const apmTracesUrl = { + name: intl.formatMessage( + { + id: 'xpack.infra.nodeContextMenu.viewAPMTraces', + defaultMessage: 'View {nodeType} APM traces', + }, + { nodeType } + ), + href: `../app/apm#/services?_g=()&kuery=${APM_FIELDS[nodeType]}~20~3A~20~22${node.id}~22`, + }; + const panels: EuiContextMenuPanelDescriptor[] = [ { id: 0, @@ -69,6 +89,7 @@ export const NodeContextMenu = injectI18n( }, ] : []), + ...[apmTracesUrl], ], }, ];