@odigos/ui-kit 0.0.224 → 0.0.225
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/DEVELOPMENT.md +27 -0
- package/Makefile +7 -0
- package/lib/chunks/index-BMJ_MZzY.js +149 -0
- package/lib/chunks/{index-Au62BabI.js → index-Dlnglk_e.js} +1 -1
- package/lib/chunks/ui-components-BqdkaDt2.js +2543 -0
- package/lib/components/_v2/autocomplete/index.d.ts +13 -3
- package/lib/components/_v2/drawer/header/index.d.ts +2 -0
- package/lib/components/_v2/drop-data/index.d.ts +1 -0
- package/lib/components/_v2/index.d.ts +1 -0
- package/lib/components/_v2/time-input/index.d.ts +24 -0
- package/lib/components/v2.js +1 -1
- package/lib/components.js +1 -1
- package/lib/constants/sampling/index.d.ts +9 -4
- package/lib/constants/sources/index.d.ts +1 -0
- package/lib/constants.js +1 -1
- package/lib/containers/_v2/_drawers/index.d.ts +1 -5
- package/lib/containers/_v2/_drawers/sampling-rule-drawer/index.d.ts +50 -0
- package/lib/containers/_v2/_forms/index.d.ts +1 -5
- package/lib/containers/_v2/_forms/sampling-rule-form/index.d.ts +2 -0
- package/lib/containers/_v2/sampling-rules/converters.d.ts +9 -0
- package/lib/containers/_v2/sampling-rules/helpers.d.ts +2 -2
- package/lib/containers/_v2/sampling-rules/rules-table/index.d.ts +1 -1
- package/lib/containers/_v2/sampling-rules/toolbar/index.d.ts +1 -1
- package/lib/containers/_v2/sampling-rules/types.d.ts +1 -42
- package/lib/containers/source-drawer/profiling/index.d.ts +1 -1
- package/lib/containers/v2.js +51 -188
- package/lib/containers.js +47 -47
- package/lib/contexts/index.d.ts +1 -0
- package/lib/contexts/sampling-rules-form-context.d.ts +90 -0
- package/lib/contexts.js +1 -1
- package/lib/functions.js +1 -1
- package/lib/hooks/useScrollTo.d.ts +1 -0
- package/lib/hooks.js +1 -1
- package/lib/snippets/_v2/colored-span/index.d.ts +1 -0
- package/lib/snippets/_v2/dynamic-field/index.d.ts +3 -1
- package/lib/snippets/_v2/index.d.ts +1 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/duration-errors.d.ts +13 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/index.d.ts +7 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/operation.d.ts +12 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/percentage.d.ts +12 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/preset-with-custom-input.d.ts +29 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/rule-info.d.ts +12 -0
- package/lib/snippets/_v2/sampling-rule-form-sections/sampling-preview.d.ts +12 -0
- package/lib/{containers/_v2/_forms/create-sampling-rule-form/sections → snippets/_v2/sampling-rule-form-sections}/source-scope.d.ts +8 -4
- package/lib/snippets/_v2/sampling-rule-form-sections/styled.d.ts +2 -0
- package/lib/snippets/v2.js +1 -53
- package/lib/snippets.js +1 -1
- package/lib/store.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/types/common/index.d.ts +2 -1
- package/lib/types/enum/index.d.ts +1 -0
- package/lib/types/sampling.d.ts +77 -0
- package/lib/types/sources/index.d.ts +18 -6
- package/lib/types.js +1 -1
- package/lib/visuals.js +1 -1
- package/package.json +1 -1
- package/lib/chunks/ui-components-CI2PiWkX.js +0 -2516
- package/lib/containers/_v2/_drawers/create-sampling-rule-drawer/index.d.ts +0 -20
- package/lib/containers/_v2/_drawers/edit-auto-rule-drawer/index.d.ts +0 -9
- package/lib/containers/_v2/_drawers/edit-cost-reduction-auto-rule-drawer/index.d.ts +0 -9
- package/lib/containers/_v2/_drawers/edit-highly-relevant-auto-rule-drawer/index.d.ts +0 -8
- package/lib/containers/_v2/_drawers/view-sampling-rule-drawer/index.d.ts +0 -21
- package/lib/containers/_v2/_forms/create-sampling-rule-form/context.d.ts +0 -34
- package/lib/containers/_v2/_forms/create-sampling-rule-form/converters.d.ts +0 -5
- package/lib/containers/_v2/_forms/create-sampling-rule-form/form-helpers.d.ts +0 -5
- package/lib/containers/_v2/_forms/create-sampling-rule-form/index.d.ts +0 -3
- package/lib/containers/_v2/_forms/create-sampling-rule-form/sections/duration-errors.d.ts +0 -9
- package/lib/containers/_v2/_forms/create-sampling-rule-form/sections/operation.d.ts +0 -9
- package/lib/containers/_v2/_forms/create-sampling-rule-form/sections/percentage.d.ts +0 -9
- package/lib/containers/_v2/_forms/create-sampling-rule-form/sections/rule-info.d.ts +0 -9
- package/lib/containers/_v2/_forms/create-sampling-rule-form/sections/sampling-preview.d.ts +0 -9
- package/lib/containers/_v2/_forms/create-sampling-rule-form/styled.d.ts +0 -5
- package/lib/containers/_v2/_forms/create-sampling-rule-form/types.d.ts +0 -54
- package/lib/containers/_v2/_forms/edit-auto-rule-form/context.d.ts +0 -21
- package/lib/containers/_v2/_forms/edit-auto-rule-form/index.d.ts +0 -3
- package/lib/containers/_v2/_forms/edit-cost-reduction-auto-rule-form/context.d.ts +0 -21
- package/lib/containers/_v2/_forms/edit-cost-reduction-auto-rule-form/index.d.ts +0 -3
- package/lib/containers/_v2/_forms/edit-highly-relevant-auto-rule-form/context.d.ts +0 -14
- package/lib/containers/_v2/_forms/edit-highly-relevant-auto-rule-form/index.d.ts +0 -3
- package/lib/containers/_v2/_forms/view-sampling-rule-form/context.d.ts +0 -37
- package/lib/containers/_v2/_forms/view-sampling-rule-form/index.d.ts +0 -3
- package/lib/containers/_v2/_forms/view-sampling-rule-form/reverse-converters.d.ts +0 -3
- package/lib/containers/_v2/_forms/view-sampling-rule-form/sections/duration-errors.d.ts +0 -6
- package/lib/containers/_v2/_forms/view-sampling-rule-form/sections/operation-details.d.ts +0 -6
- package/lib/containers/_v2/_forms/view-sampling-rule-form/sections/percentage.d.ts +0 -6
- package/lib/containers/_v2/_forms/view-sampling-rule-form/sections/rule-info.d.ts +0 -6
- package/lib/containers/_v2/_forms/view-sampling-rule-form/sections/sampling-preview.d.ts +0 -6
- package/lib/containers/_v2/_forms/view-sampling-rule-form/sections/source-scopes.d.ts +0 -6
- /package/lib/containers/_v2/{_forms/view-sampling-rule-form/footer.d.ts → _drawers/sampling-rule-drawer/view-footer.d.ts} +0 -0
package/lib/containers/v2.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect as n,Fragment as o,useState as l,useCallback as
|
|
1
|
+
import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect as n,Fragment as o,useState as l,useCallback as i,useContext as s,createContext as r,useMemo as c,useRef as d,Children as u}from"react";import p,{useTheme as m}from"styled-components";import{F as h,c as g,d as b,T as f,e as v,h as y,f as C,i as S,j as k,I as w,k as I,l as D,m as T,K as N,n as A,o as E,p as x,D as R,q as O,B as $,a as P,r as F,s as M,t as L,v as V,N as B,w as _,x as z,y as U,z as j,E as X,G as H,H as W,J as G,L as q,M as K,O as Y,P as J,Q,R as Z,U as ee,V as te,W as ae,X as ne,Y as oe,Z as le,_ as ie,$ as se,a0 as re,a1 as ce,a2 as de,a3 as ue,a4 as pe,a5 as me,a6 as he,a7 as ge,a8 as be,a9 as fe,aa as ve,ab as ye,ac as Ce,ad as Se,ae as ke,af as we,ag as Ie,ah as De,ai as Te,aj as Ne,ak as Ae,al as Ee,S as xe,am as Re,an as Oe,ao as $e,b as Pe,ap as Fe,aq as Me,ar as Le,as as Ve,at as Be,au as _e,av as ze,aw as Ue,ax as je,ay as Xe,az as He,aA as We,aB as Ge,aC as qe,aD as Ke,aE as Ye,aF as Je,aG as Qe,aH as Ze,aI as et,aJ as tt,aK as at,aL as nt,aM as ot,aN as lt,aO as it,aP as st,aQ as rt,aR as ct,aS as dt,aT as ut,aU as pt,aV as mt,aW as ht,aX as gt,aY as bt,aZ as ft,a_ as vt,a$ as yt,u as Ct,b0 as St,b1 as kt,b2 as wt,b3 as It,b4 as Dt,b5 as Tt,b6 as Nt,g as At,b7 as Et,A as xt,b8 as Rt,b9 as Ot,ba as $t,bb as Pt,bc as Ft,bd as Mt,be as Lt,bf as Vt,bg as Bt,bh as _t,bi as zt,bj as Ut,bk as jt,bl as Xt,bm as Ht,bn as Wt,bo as Gt,bp as qt,bq as Kt,br as Yt,bs as Jt,bt as Qt,bu as Zt,bv as ea,bw as ta,bx as aa,by as na,bz as oa,bA as la,bB as ia,bC as sa,bD as ra,bE as ca,bF as da,bG as ua,bH as pa,bI as ma,bJ as ha,bK as ga,bL as ba,bM as fa,bN as va,bO as ya,bP as Ca,bQ as Sa,bR as ka,bS as wa,bT as Ia,bU as Da,bV as Ta}from"../chunks/ui-components-BqdkaDt2.js";import{ChevronRightIcon as Na,TrashIcon as Aa,PlusIcon as Ea,BookIcon as xa,VSquareIcon as Ra,XSquareIcon as Oa,DeleteIcon as $a,EditIcon as Pa,GoLogo as Fa,JavaLogo as Ma,ActionIcon as La,DestinationIcon as Va,ChevronUpIcon as Ba,ChevronDownIcon as _a,VIcon as za,XIcon as Ua,InstrumentationRuleIcon as ja,SourceIcon as Xa,NamespacesIcon as Ha,SettingsIcon as Wa,SamplingIcon as Ga,ExclamationTriangleIcon as qa,ExclamationCircleIcon as Ka,KeyIcon as Ya,DiagnoseIcon as Ja,DownloadIcon as Qa,TerminalIcon as Za,RefreshIcon as en,ConnectionsIcon as tn,OdigosLogo as an,ArrowRightIcon as nn,PodIcon as on,ArrowDownSquareIcon as ln,ArrowUpSquareIcon as sn,PipelineCollectorIcon as rn,GatewayIcon as cn,YamlIcon as dn}from"../icons.js";import{S as un,D as pn,A as mn,P as hn,a as gn,b as bn,R as fn,c as vn,O as yn,d as Cn,e as Sn,W as kn,f as wn,g as In,h as Dn,U as Tn}from"../chunks/index-BMJ_MZzY.js";import{Y as Nn}from"../chunks/index-Dlnglk_e.js";import"zustand";import"javascript-time-ago";import"../chunks/vendor-C150cdxb.js";import"@xyflow/react";import"react-dom";import"prism-react-renderer";import"react-error-boundary";import"lottie-react";import"virtua";const An=p.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
justify-content: space-between;
|
|
@@ -11,190 +11,43 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
11
11
|
&:hover {
|
|
12
12
|
background-color: ${({$isSelected:e,$purpleColors:t,theme:a})=>e?t?a.v2.colors.purple[700]:a.v2.colors.silver[600]:t?a.v2.colors.purple[800]:a.v2.colors.silver[700]};
|
|
13
13
|
}
|
|
14
|
-
`,
|
|
14
|
+
`,En=p.div`
|
|
15
15
|
display: flex;
|
|
16
16
|
align-items: center;
|
|
17
17
|
justify-content: center;
|
|
18
18
|
padding: 8px;
|
|
19
19
|
border-radius: 8px;
|
|
20
20
|
background-color: ${({theme:e})=>e.v2.colors.white[500]+y["004"]};
|
|
21
|
-
`,Kn=({dataId:a,icon:n,title:o,description:l,withCarret:r,purpleColors:i,disabled:s,children:c,isSelected:d,onClick:u,isChecked:p,isPartiallyChecked:y,onCheckboxChange:S})=>{const C=m();return e(Hn,{"data-id":a||`list-item-${o}`,$isSelected:d,$purpleColors:i,$disabled:s,onClick:()=>!d&&!s&&u(),children:[e(h,{$gap:4,children:[e(g,{$gap:12,children:[S&&t(f,{partiallyChecked:y||!1,value:p||!1,onChange:e=>S(e)}),n&&t(Wn,{children:t(n,{size:20})}),t(v,{size:b.XS,children:o})]}),l&&t(v,{size:b.XXXS,color:C.v2.colors.silver[200],children:l})]}),(r||c)&&e(g,{$gap:8,children:[c,r&&t(Qa,{size:18})]})]})},Gn=[{id:"CREDIT_CARD",label:"Credit card"}],qn=[{id:S.CollectContainerAttributes,label:"Collect container attributes"},{id:S.CollectReplicaSetAttributes,label:"Collect ReplicaSet attributes"},{id:S.CollectWorkloadId,label:"Collect workload ID"},{id:S.CollectClusterId,label:"Collect cluster ID"}],Yn=[{id:N.Pod,label:N.Pod},{id:N.Namespace,label:N.Namespace},{id:N.Node,label:N.Node}],Jn=[{label:"Label key",keyName:"labelKey",placeholder:"app.kubernetes.io/name"},{label:"Attribute key",keyName:"attributeKey",placeholder:"app.kubernetes.name"},{label:"From sources",keyName:"fromSources",placeholder:"pod, namespace",tooltip:"Select multiple sources. Higher precedence sources (pod > namespace > node) will override lower ones.",componentType:"multi-dropdown",options:Yn}],Qn=[{label:"Annotation key",keyName:"annotationKey",placeholder:"kubectl.kubernetes.io/restartedAt"},{label:"Attribute key",keyName:"attributeKey",placeholder:"kubectl.kubernetes.restartedAt"},{label:"From sources",keyName:"fromSources",placeholder:"pod, namespace",tooltip:"Select multiple sources. Higher precedence sources (pod > namespace > node) will override lower ones.",componentType:"multi-dropdown",options:Yn}],Zn=[{label:"Service",keyName:"serviceName",placeholder:"e.g. my-service",tooltip:"Service name: The rule applies to a specific service name. Only traces originating from this service’s root span will be considered."},{label:"HTTP route",keyName:"httpRoute",placeholder:"e.g. /api/v1/users",tooltip:"HTTP route: The specific HTTP route prefix to match for sampling. Only traces with routes beginning with this prefix will be considered. For instance, configuring /buy will also match /buy/product."},{label:"Threshold",keyName:"minimumLatencyThreshold",placeholder:"e.g. 1000",tooltip:"Minimum latency threshold (ms): Specifies the minimum latency in milliseconds; traces with latency below this threshold are ignored.",inputType:T.Number},{label:"Fallback",keyName:"fallbackSamplingRatio",placeholder:"e.g. 100",tooltip:"Fallback sampling ratio: Specifies the percentage of traces that meet the service/http_route filter but fall below the threshold that you still want to retain. For example, if a rule is set for service A and http_route B with a minimum latency threshold of 1 second, you might still want to keep some traces below this threshold. Setting the ratio to 20% ensures that 20% of these traces will be retained.",inputType:T.Number}],eo=S.UrlTemplatizationRulesGroups,to=[{keyName:"kind",label:"Kind",placeholder:"Any kind",componentType:"dropdown",options:[{id:"Deployment",label:"Deployment"},{id:"StatefulSet",label:"StatefulSet"},{id:"DaemonSet",label:"DaemonSet"}]},{keyName:"name",label:"Name",placeholder:"Any name"}],ao=[{label:"Service name",keyName:"serviceName",placeholder:"e.g. my-service",tooltip:"Specifies the service name to search within the trace (Across all available spans)."},{label:"Sampling ratio",keyName:"samplingRatio",placeholder:"e.g. 10",tooltip:"Specifies the sample rate for all traces.",inputType:T.Number},{label:"Fallback sampling ratio",keyName:"fallbackSamplingRatio",placeholder:"e.g. 100",tooltip:"Specifies the percentage of traces that don’t meet the service name filter and that you still like to retain.",inputType:T.Number}],no=[{label:"Service name",keyName:"serviceName",placeholder:"e.g. my-service",tooltip:"Specifies the service name to search within the trace (across all available spans)."},{label:"Attribute key",keyName:"attributeKey",placeholder:"e.g. http.request.method",tooltip:"Specifies the attribute key inside of the span."},{label:"Fallback sampling ratio",keyName:"fallbackSamplingRatio",placeholder:"e.g. 100",tooltip:"Specifies the percentage of traces that don’t meet the service name filter and that you still like to retain.",inputType:T.Number},{label:"Condition",keyName:"condition",tooltip:"An object representing the filters for span attributes filters.",componentType:M.Dropdown,options:[{id:"stringCondition",label:"String condition"},{id:"numberCondition",label:"Number condition"},{id:"booleanCondition",label:"Boolean condition"},{id:"jsonCondition",label:"JSON condition"}]},{label:"Operation",keyName:"operation",tooltip:"Specifies the operation to run against the attribute.",componentType:M.Dropdown,options:[{id:"exists",label:"Exists"},{id:"equals",label:"Equals"},{id:"not_equals",label:"Not equals"},{id:"contains",label:"Contains"},{id:"not_contains",label:"Not contains"},{id:"regex",label:"Regex"},{id:"greater_than",label:"Greater than"},{id:"less_than",label:"Less than"},{id:"greater_than_or_equal",label:"Greater than or equal"},{id:"less_than_or_equal",label:"Less than or equal"},{id:"is_valid_json",label:"Is valid JSON"},{id:"is_invalid_json",label:"Is invalid JSON"},{id:"jsonpath_exists",label:"JSON path exists"},{id:"key_equals",label:"Key equals"},{id:"key_not_equals",label:"Key not equals"}]},{label:"Expected value",keyName:"expectedValue",placeholder:"e.g. GET",tooltip:"The values to test the attribute against."},{label:"JSON path",keyName:"jsonPath",placeholder:"e.g. $.user.role",tooltip:"An expression used to navigate the JSON structure.",renderCondition:e=>"jsonCondition"===e.condition}],oo={[F.K8sAttributes]:({value:o,setValue:l,formErrors:r})=>(n(()=>{o[S.CollectContainerAttributes]||o[S.CollectReplicaSetAttributes]||o[S.CollectWorkloadId]||o[S.CollectClusterId]||o[S.LabelsAttributes]?.length||o[S.AnnotationsAttributes]?.length||(l(S.CollectContainerAttributes,!0),l(S.CollectReplicaSetAttributes,!0),l(S.CollectWorkloadId,!0),l(S.CollectClusterId,!0),l(S.LabelsAttributes,[]),l(S.AnnotationsAttributes,[]))},[]),e(a,{children:[t(h,{$gap:6,children:qn.map(({id:a,label:n})=>e(h,{children:[t(f,{label:n,value:o[a]||!1,onChange:e=>l(a,e)}),t(k,{errorMessage:r[a]})]},a))}),t(D,{name:"labelsAttributes",label:"Label attributes",limitFieldsPerRow:2,columns:Jn,values:o[S.LabelsAttributes]||[],setValues:e=>l(S.LabelsAttributes,e),errorMessage:r[S.LabelsAttributes]}),t(D,{name:"annotationsAttributes",label:"Annotation attributes",limitFieldsPerRow:2,columns:Qn,values:o[S.AnnotationsAttributes]||[],setValues:e=>l(S.AnnotationsAttributes,e),errorMessage:r[S.AnnotationsAttributes]})]})),[F.AddClusterInfo]:({value:n,setValue:o,formErrors:l})=>{const r=m();return e(a,{children:[t(A,{label:"Overwrite existing values",labelAlign:I.Left,labelColor:r.v2.colors.silver[200],tooltip:"If enabled, the resource attributes will overwrite any existing attributes with the same name.",value:n[S.OverwriteExistingValues]||!1,onChange:e=>o(S.OverwriteExistingValues,e)}),t(D,{name:"clusterAttributes",label:"Resource attributes",limitFieldsPerRow:2,columns:[{keyName:"attributeName",label:"Attribute name"},{keyName:"attributeStringValue",label:"Attribute value"}],values:n[S.ClusterAttributes]||[],setValues:e=>o(S.ClusterAttributes,e),errorMessage:l[S.ClusterAttributes]})]})},[F.DeleteAttributes]:({value:e,setValue:a,formErrors:n})=>t(E,{name:"attributeNamesToDelete",label:"Attributes to delete",values:e[S.AttributeNamesToDelete]||[],setValues:e=>a(S.AttributeNamesToDelete,e),errorMessage:n[S.AttributeNamesToDelete]}),[F.RenameAttributes]:({value:e,setValue:a,formErrors:n})=>t(D,{name:"renames",label:"Attributes to rename",limitFieldsPerRow:2,columns:[{keyName:"oldKey",label:"Old key"},{keyName:"newKey",label:"New key"}],values:Object.entries(e[S.Renames]||{}).map(([e,t])=>({oldKey:e,newKey:t})),setValues:e=>{const t={};e.forEach(e=>t[e.oldKey]=e.newKey),a(S.Renames,t)},errorMessage:n[S.Renames]}),[F.PiiMasking]:({value:a,setValue:o,formErrors:l})=>(n(()=>{a[S.PiiCategories]?.length||o(S.PiiCategories,Gn.map(({id:e})=>e))},[]),e(h,{$gap:12,children:[t(C,{label:"Attributes to mask"}),t(h,{$gap:6,children:Gn.map(({id:e,label:n})=>t(f,{label:n,value:a[S.PiiCategories]?.includes(e)||!1,onChange:t=>{const n=a[S.PiiCategories]||[],l=t?[...n,e]:n.filter(t=>t!==e);o(S.PiiCategories,l)}},e))}),t(k,{errorMessage:l[S.PiiCategories]})]})),[F.ErrorSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[S.FallbackSamplingRatio],l=x(e[S.FallbackSamplingRatio])?"":String(e[S.FallbackSamplingRatio]);return t(w,{name:"fallbackSamplingRatio",label:"Fallback sampling ratio",type:T.Number,min:0,max:100,value:l,placeholder:"0-100",onChange:e=>{return t=e.target.value,a(S.FallbackSamplingRatio,Math.max(0,Math.min(Number(t),100))||0);var t},errorMessage:o})},[F.ProbabilisticSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[S.SamplingPercentage],l=x(e[S.SamplingPercentage])?"":String(e[S.SamplingPercentage]);return t(w,{name:"samplingPercentage",label:"Sampling percentage",type:T.Number,min:0,max:100,value:l,placeholder:"0-100",onChange:e=>{return t=e.target.value,a(S.SamplingPercentage,Math.max(0,Math.min(Number(t),100))||0);var t},errorMessage:o})},[F.LatencySampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[S.EndpointsFilters],l=e[S.EndpointsFilters]||[];return t(D,{name:"endpointsFilters",limitFieldsPerRow:2,columns:Zn,values:l,setValues:e=>{a(S.EndpointsFilters,e.map(({serviceName:e,httpRoute:t,minimumLatencyThreshold:a,fallbackSamplingRatio:n})=>({serviceName:e,httpRoute:t,minimumLatencyThreshold:Number(a),fallbackSamplingRatio:Number(n)})))},errorMessage:o})},[F.ServiceNameSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[S.ServicesNameFilters],l=e[S.ServicesNameFilters]||[];return t(D,{name:"servicesNameFilters",limitFieldsPerRow:2,columns:ao,values:l,setValues:e=>{a(S.ServicesNameFilters,e.map(({serviceName:e,samplingRatio:t,fallbackSamplingRatio:a})=>({serviceName:e,samplingRatio:Number(t),fallbackSamplingRatio:Number(a)})))},errorMessage:o})},[F.SpanAttributeSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[S.AttributeFilters],l=(e[S.AttributeFilters]||[]).map(({serviceName:e,attributeKey:t,fallbackSamplingRatio:a,condition:n})=>{const o=Object.entries(n).filter(([e,t])=>t)[0][0];return{serviceName:e,attributeKey:t,fallbackSamplingRatio:a,condition:o,operation:n[o]?.operation,expectedValue:n[o]?.expectedValue,jsonPath:n[o]?.jsonPath}});return t(D,{name:"attributeFilters",limitFieldsPerRow:2,columns:no,values:l,setValues:e=>{a(S.AttributeFilters,e.map(({serviceName:e,attributeKey:t,fallbackSamplingRatio:a,condition:n,operation:o,expectedValue:l,jsonPath:r})=>{const i={serviceName:e,attributeKey:t,fallbackSamplingRatio:Number(a),condition:{[n]:{operation:o,expectedValue:l}}};return r&&(i.condition[n].jsonPath=r),i}))},errorMessage:o})},[F.URLTemplatization]:({value:n,setValue:l,formErrors:r})=>{const i=m(),s=n[eo]||[{filterK8sNamespace:"",workloadFilters:[],templatizationRules:[{template:""}],notes:""}],c=e=>l(eo,e),d=(e,t)=>c(s.map((a,n)=>n===e?{...a,...t}:a));return e(a,{children:[s.map((a,n)=>e(o,{children:[t(R,{}),e(h,{$gap:12,children:[e(g,{$justifyContent:"space-between",$alignItems:"center",children:[t(C,{label:`Rule Group ${n+1}`}),t(P,{leftIcon:()=>t(Za,{fill:i.v2.colors.red[500]}),variant:O.Secondary,size:$.S,onClick:()=>{return e=n,c(s.filter((t,a)=>a!==e));var e},disabled:1===s.length})]}),t(w,{name:`urlGroup-${n}-namespace`,label:"Namespace",placeholder:"All namespaces",tooltip:"Filter rules to a specific Kubernetes namespace.",value:a.filterK8sNamespace||"",onChange:e=>d(n,{filterK8sNamespace:e.target.value})}),t(D,{name:`urlGroup-${n}-workloadFilters`,label:"Workload filters",tooltip:"Optionally scope templates to specific workloads.",columns:to,values:a.workloadFilters||[],setValues:e=>d(n,{workloadFilters:e})}),t(E,{name:`urlGroup-${n}-templates`,label:"Templates",required:!0,placeholder:"e.g. /user/{id}",values:a.templatizationRules.map(e=>e.template),setValues:e=>d(n,{templatizationRules:e.map(e=>({template:e}))})})]}),t(k,{errorMessage:r[eo]})]},`url-templatization-group-${n}`)),t(P,{variant:O.Secondary,label:"Add rule group",leftIcon:en,onClick:()=>c([...s,{filterK8sNamespace:"",workloadFilters:[],templatizationRules:[{template:""}],notes:""}])}),t(R,{})]})}},lo=({actionType:e,value:a,setValue:n,formErrors:o})=>{if(!e)return null;const l=oo[e];return l?t(l,{value:a,setValue:n,formErrors:o}):null},ro={type:"",disabled:!1,name:"",notes:"",signals:[],fields:{}},io=s({selectedOption:null,onSelectOption:()=>{},genericForm:void 0,validateFormData:()=>({preparedFormData:z(ro)}),errorMessage:void 0}),so=({children:e})=>{const[a,n]=l(null),[o,i]=l(void 0),s=L(ro),c=r(e=>{s.resetFormData(),s.handleErrorChange(void 0,void 0,{}),i(void 0),e?.type&&s.handleFormChange("type",e.type),n(e)},[]),d=r(()=>{if(!a)return{errorMessage:"No action type selected",preparedFormData:z(ro)};const e=(t=s.formData,z(t));var t;const n={};s.handleErrorChange(void 0,void 0,n);const o=Object.keys(n).length>0?"Invalid form values":void 0;return i(o),{errorMessage:o,preparedFormData:e}},[s,a]);return t(io.Provider,{value:{selectedOption:a,onSelectOption:c,genericForm:s,validateFormData:d,errorMessage:o},children:e})},co=()=>i(io),uo=()=>{const a=m(),{selectedOption:n,genericForm:o}=co();if(!o||!n)return t(V,{title:"No active form"});const{formData:l,handleFormChange:r,formErrors:i}=o;return e(h,{$gap:24,children:[e(g,{$gap:12,$justifyContent:"space-between",children:[t(v,{size:b.XXS,children:n.docsDescription}),t(P,{label:"Docs",leftIcon:tn,variant:O.Text,size:$.S,onClick:()=>window.open(`${X}${n.docsEndpoint}`,"_blank","noopener noreferrer")})]}),t(B,{options:[{icon:an,label:"Enabled",value:!1,selectedBgColor:a.v2.colors.green[800]},{icon:nn,label:"Disabled",value:!0,selectedBgColor:a.v2.colors.red[800]}],selected:l.disabled,setSelected:e=>r("disabled",e)}),t(Mn,{title:"Signals for processing",allowedSignals:n.allowedSignals,selectedSignals:l.signals||[],setSelectedSignals:e=>r("signals",e),errorMessage:i.signals}),t(w,{name:"actionName",label:"Action name",placeholder:"Use a name that describes the action...",value:l.name||"",onChange:({target:{value:e}})=>r("name",e),errorMessage:i.name}),t(lo,{actionType:n.type,value:l.fields,setValue:(e,t)=>r(`fields.${e}`,t),formErrors:i}),t(_,{name:"notes",label:"Notes",placeholder:"Your personal notes...",value:l.notes||"",onChange:({target:{value:e}})=>r("notes",e),errorMessage:i.notes})]})},po=({signals:e,fields:a,disabled:n,formData:o,handleFormChange:l,formErrors:r})=>a?.map(({renderCondition:a,componentType:i,type:s,name:c,title:d,tooltip:u,placeholder:p,value:m,required:h,options:g})=>{if(!(!a||U(a,e,o.fields)))return null;const f=c,v=o.fields.find(e=>e.key===f),b=v?v.value:m;return t(Fn,{componentType:i,inputType:s,name:f,label:d,tooltip:u,disabled:n,required:h,placeholder:p,errorMessage:r[f],dropdownOptions:g,value:b||"",setValue:e=>l(f,e)},f)}),mo={type:"",name:"",currentStreamName:"",disabled:!1,exportedSignals:{logs:!1,metrics:!1,traces:!1},fields:[]},ho={activeForm:null,onChangeActiveForm:()=>{},genericForm:void 0,formErrorMessage:void 0,validateFormData:()=>({isOk:!1,preparedFormData:z(mo)}),unsavedDestinations:[],thisUnsavedDestination:void 0,setUnsavedDestinations:()=>{},addUnsavedDestination:()=>{},updateUnsavedDestination:()=>{},deleteUnsavedDestination:()=>{}},go=s(ho),fo=({children:e})=>{const{selectedStreamName:a}=j(),[o,i]=l(null),[s,d]=l(),[u,p]=l(ho.unsavedDestinations),m=c(()=>"number"==typeof o?.unsavedIdx?u[o.unsavedIdx]:void 0,[o,u]),h=r((e,t)=>{o&&(p(t=>[...t,{...e,option:o.option}]),i(t?e=>e?{...e,listType:H.UNSAVED,unsavedIdx:u.length}:null:null))},[o,u.length]),g=r((e,t,a)=>{o&&(p(a=>a.map((a,n)=>n===e?{...a,...t,option:o.option}:a)),i(a?e=>e?{...e,listType:H.UNSAVED}:null:null))},[o]),f=r(e=>{p(t=>t.filter((t,a)=>a!==e)),i(null)},[]),v=L({...mo,currentStreamName:a});n(()=>{if(o)if(m)v.handleFormChange(void 0,void 0,m.formData);else{v.handleFormChange("type",o.option.type),v.handleFormChange("name",o.option.displayName),v.handleFormChange("disabled",!1);const e=W(o.option.supportedSignals);v.handleFormChange("exportedSignals",{logs:e.includes(K.Logs),metrics:e.includes(K.Metrics),traces:e.includes(K.Traces)}),v.handleFormChange("fields",o.dynamicFields.map(e=>({key:e.name,value:e.value})))}},[o,m]);const b=r(e=>{var t;v.resetFormData(),v.handleErrorChange(void 0,void 0,{}),d(void 0),i(e?{...e,dynamicFields:e.option?.fields?(t=e.option.fields,t.filter(e=>!!e).map(e=>{const{name:t,componentType:a,componentProperties:n,displayName:o,initialValue:l,renderCondition:r}=e,i=a===M.Dropdown,s=q(n,{});return{componentType:a,renderCondition:r,name:t,title:o,value:l,placeholder:s.placeholder||(i?"Select an option":void 0),options:i&&Array.isArray(s.values)?s.values.map(e=>({id:e,value:e})):void 0,...s}})):[]}:null)},[]),y=r(()=>{const e=z(v.formData),t={};o?.dynamicFields.forEach(({name:a,required:n})=>{if(n){const n=e.fields.find(e=>e.key===a)?.value;x(n)&&(t[a]=Y.FIELD_IS_REQUIRED)}});G(e.exportedSignals).length||(t.exportedSignals=Y.FIELD_IS_REQUIRED);const a=0===Object.keys(t).length?void 0:"Invalid form values";return v.handleErrorChange(void 0,void 0,t),d(a),{errorMessage:a,preparedFormData:e}},[v,o]);return t(go.Provider,{value:{activeForm:o,onChangeActiveForm:b,genericForm:v,formErrorMessage:s,validateFormData:y,unsavedDestinations:u,thisUnsavedDestination:m,setUnsavedDestinations:p,addUnsavedDestination:h,updateUnsavedDestination:g,deleteUnsavedDestination:f},children:e})},vo=()=>i(go),bo=p(g)`
|
|
21
|
+
`,xn=({dataId:a,icon:n,title:o,description:l,withCarret:i,purpleColors:s,disabled:r,children:c,isSelected:d,onClick:u,isChecked:p,isPartiallyChecked:y,onCheckboxChange:C})=>{const S=m();return e(An,{"data-id":a||`list-item-${o}`,$isSelected:d,$purpleColors:s,$disabled:r,onClick:()=>!d&&!r&&u(),children:[e(h,{$gap:4,children:[e(g,{$gap:12,children:[C&&t(b,{partiallyChecked:y||!1,value:p||!1,onChange:e=>C(e)}),n&&t(En,{children:t(n,{size:20})}),t(f,{size:v.XS,children:o})]}),l&&t(f,{size:v.XXXS,color:S.v2.colors.silver[200],children:l})]}),(i||c)&&e(g,{$gap:8,children:[c,i&&t(Na,{size:18})]})]})},Rn=[{id:"CREDIT_CARD",label:"Credit card"}],On=[{id:C.CollectContainerAttributes,label:"Collect container attributes"},{id:C.CollectReplicaSetAttributes,label:"Collect ReplicaSet attributes"},{id:C.CollectWorkloadId,label:"Collect workload ID"},{id:C.CollectClusterId,label:"Collect cluster ID"}],$n=[{id:N.Pod,label:N.Pod},{id:N.Namespace,label:N.Namespace},{id:N.Node,label:N.Node}],Pn=[{label:"Label key",keyName:"labelKey",placeholder:"app.kubernetes.io/name"},{label:"Attribute key",keyName:"attributeKey",placeholder:"app.kubernetes.name"},{label:"From sources",keyName:"fromSources",placeholder:"pod, namespace",tooltip:"Select multiple sources. Higher precedence sources (pod > namespace > node) will override lower ones.",componentType:"multi-dropdown",options:$n}],Fn=[{label:"Annotation key",keyName:"annotationKey",placeholder:"kubectl.kubernetes.io/restartedAt"},{label:"Attribute key",keyName:"attributeKey",placeholder:"kubectl.kubernetes.restartedAt"},{label:"From sources",keyName:"fromSources",placeholder:"pod, namespace",tooltip:"Select multiple sources. Higher precedence sources (pod > namespace > node) will override lower ones.",componentType:"multi-dropdown",options:$n}],Mn=[{label:"Service",keyName:"serviceName",placeholder:"e.g. my-service",tooltip:"Service name: The rule applies to a specific service name. Only traces originating from this service’s root span will be considered."},{label:"HTTP route",keyName:"httpRoute",placeholder:"e.g. /api/v1/users",tooltip:"HTTP route: The specific HTTP route prefix to match for sampling. Only traces with routes beginning with this prefix will be considered. For instance, configuring /buy will also match /buy/product."},{label:"Threshold",keyName:"minimumLatencyThreshold",placeholder:"e.g. 1000",tooltip:"Minimum latency threshold (ms): Specifies the minimum latency in milliseconds; traces with latency below this threshold are ignored.",inputType:I.Number},{label:"Fallback",keyName:"fallbackSamplingRatio",placeholder:"e.g. 100",tooltip:"Fallback sampling ratio: Specifies the percentage of traces that meet the service/http_route filter but fall below the threshold that you still want to retain. For example, if a rule is set for service A and http_route B with a minimum latency threshold of 1 second, you might still want to keep some traces below this threshold. Setting the ratio to 20% ensures that 20% of these traces will be retained.",inputType:I.Number}],Ln=C.UrlTemplatizationRulesGroups,Vn=[{keyName:"kind",label:"Kind",placeholder:"Any kind",componentType:"dropdown",options:[{id:"Deployment",label:"Deployment"},{id:"StatefulSet",label:"StatefulSet"},{id:"DaemonSet",label:"DaemonSet"}]},{keyName:"name",label:"Name",placeholder:"Any name"}],Bn=[{label:"Service name",keyName:"serviceName",placeholder:"e.g. my-service",tooltip:"Specifies the service name to search within the trace (Across all available spans)."},{label:"Sampling ratio",keyName:"samplingRatio",placeholder:"e.g. 10",tooltip:"Specifies the sample rate for all traces.",inputType:I.Number},{label:"Fallback sampling ratio",keyName:"fallbackSamplingRatio",placeholder:"e.g. 100",tooltip:"Specifies the percentage of traces that don’t meet the service name filter and that you still like to retain.",inputType:I.Number}],_n=[{label:"Service name",keyName:"serviceName",placeholder:"e.g. my-service",tooltip:"Specifies the service name to search within the trace (across all available spans)."},{label:"Attribute key",keyName:"attributeKey",placeholder:"e.g. http.request.method",tooltip:"Specifies the attribute key inside of the span."},{label:"Fallback sampling ratio",keyName:"fallbackSamplingRatio",placeholder:"e.g. 100",tooltip:"Specifies the percentage of traces that don’t meet the service name filter and that you still like to retain.",inputType:I.Number},{label:"Condition",keyName:"condition",tooltip:"An object representing the filters for span attributes filters.",componentType:F.Dropdown,options:[{id:"stringCondition",label:"String condition"},{id:"numberCondition",label:"Number condition"},{id:"booleanCondition",label:"Boolean condition"},{id:"jsonCondition",label:"JSON condition"}]},{label:"Operation",keyName:"operation",tooltip:"Specifies the operation to run against the attribute.",componentType:F.Dropdown,options:[{id:"exists",label:"Exists"},{id:"equals",label:"Equals"},{id:"not_equals",label:"Not equals"},{id:"contains",label:"Contains"},{id:"not_contains",label:"Not contains"},{id:"regex",label:"Regex"},{id:"greater_than",label:"Greater than"},{id:"less_than",label:"Less than"},{id:"greater_than_or_equal",label:"Greater than or equal"},{id:"less_than_or_equal",label:"Less than or equal"},{id:"is_valid_json",label:"Is valid JSON"},{id:"is_invalid_json",label:"Is invalid JSON"},{id:"jsonpath_exists",label:"JSON path exists"},{id:"key_equals",label:"Key equals"},{id:"key_not_equals",label:"Key not equals"}]},{label:"Expected value",keyName:"expectedValue",placeholder:"e.g. GET",tooltip:"The values to test the attribute against."},{label:"JSON path",keyName:"jsonPath",placeholder:"e.g. $.user.role",tooltip:"An expression used to navigate the JSON structure.",renderCondition:e=>"jsonCondition"===e.condition}],zn={[M.K8sAttributes]:({value:o,setValue:l,formErrors:i})=>(n(()=>{o[C.CollectContainerAttributes]||o[C.CollectReplicaSetAttributes]||o[C.CollectWorkloadId]||o[C.CollectClusterId]||o[C.LabelsAttributes]?.length||o[C.AnnotationsAttributes]?.length||(l(C.CollectContainerAttributes,!0),l(C.CollectReplicaSetAttributes,!0),l(C.CollectWorkloadId,!0),l(C.CollectClusterId,!0),l(C.LabelsAttributes,[]),l(C.AnnotationsAttributes,[]))},[]),e(a,{children:[t(h,{$gap:6,children:On.map(({id:a,label:n})=>e(h,{children:[t(b,{label:n,value:o[a]||!1,onChange:e=>l(a,e)}),t(k,{errorMessage:i[a]})]},a))}),t(T,{name:"labelsAttributes",label:"Label attributes",limitFieldsPerRow:2,columns:Pn,values:o[C.LabelsAttributes]||[],setValues:e=>l(C.LabelsAttributes,e),errorMessage:i[C.LabelsAttributes]}),t(T,{name:"annotationsAttributes",label:"Annotation attributes",limitFieldsPerRow:2,columns:Fn,values:o[C.AnnotationsAttributes]||[],setValues:e=>l(C.AnnotationsAttributes,e),errorMessage:i[C.AnnotationsAttributes]})]})),[M.AddClusterInfo]:({value:n,setValue:o,formErrors:l})=>{const i=m();return e(a,{children:[t(A,{label:"Overwrite existing values",labelAlign:E.Left,labelColor:i.v2.colors.silver[200],tooltip:"If enabled, the resource attributes will overwrite any existing attributes with the same name.",value:n[C.OverwriteExistingValues]||!1,onChange:e=>o(C.OverwriteExistingValues,e)}),t(T,{name:"clusterAttributes",label:"Resource attributes",limitFieldsPerRow:2,columns:[{keyName:"attributeName",label:"Attribute name"},{keyName:"attributeStringValue",label:"Attribute value"}],values:n[C.ClusterAttributes]||[],setValues:e=>o(C.ClusterAttributes,e),errorMessage:l[C.ClusterAttributes]})]})},[M.DeleteAttributes]:({value:e,setValue:a,formErrors:n})=>t(x,{name:"attributeNamesToDelete",label:"Attributes to delete",values:e[C.AttributeNamesToDelete]||[],setValues:e=>a(C.AttributeNamesToDelete,e),errorMessage:n[C.AttributeNamesToDelete]}),[M.RenameAttributes]:({value:e,setValue:a,formErrors:n})=>t(T,{name:"renames",label:"Attributes to rename",limitFieldsPerRow:2,columns:[{keyName:"oldKey",label:"Old key"},{keyName:"newKey",label:"New key"}],values:Object.entries(e[C.Renames]||{}).map(([e,t])=>({oldKey:e,newKey:t})),setValues:e=>{const t={};e.forEach(e=>t[e.oldKey]=e.newKey),a(C.Renames,t)},errorMessage:n[C.Renames]}),[M.PiiMasking]:({value:a,setValue:o,formErrors:l})=>(n(()=>{a[C.PiiCategories]?.length||o(C.PiiCategories,Rn.map(({id:e})=>e))},[]),e(h,{$gap:12,children:[t(S,{label:"Attributes to mask"}),t(h,{$gap:6,children:Rn.map(({id:e,label:n})=>t(b,{label:n,value:a[C.PiiCategories]?.includes(e)||!1,onChange:t=>{const n=a[C.PiiCategories]||[],l=t?[...n,e]:n.filter(t=>t!==e);o(C.PiiCategories,l)}},e))}),t(k,{errorMessage:l[C.PiiCategories]})]})),[M.ErrorSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[C.FallbackSamplingRatio],l=D(e[C.FallbackSamplingRatio])?"":String(e[C.FallbackSamplingRatio]);return t(w,{name:"fallbackSamplingRatio",label:"Fallback sampling ratio",type:I.Number,min:0,max:100,value:l,placeholder:"0-100",onChange:e=>{return t=e.target.value,a(C.FallbackSamplingRatio,Math.max(0,Math.min(Number(t),100))||0);var t},errorMessage:o})},[M.ProbabilisticSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[C.SamplingPercentage],l=D(e[C.SamplingPercentage])?"":String(e[C.SamplingPercentage]);return t(w,{name:"samplingPercentage",label:"Sampling percentage",type:I.Number,min:0,max:100,value:l,placeholder:"0-100",onChange:e=>{return t=e.target.value,a(C.SamplingPercentage,Math.max(0,Math.min(Number(t),100))||0);var t},errorMessage:o})},[M.LatencySampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[C.EndpointsFilters],l=e[C.EndpointsFilters]||[];return t(T,{name:"endpointsFilters",limitFieldsPerRow:2,columns:Mn,values:l,setValues:e=>{a(C.EndpointsFilters,e.map(({serviceName:e,httpRoute:t,minimumLatencyThreshold:a,fallbackSamplingRatio:n})=>({serviceName:e,httpRoute:t,minimumLatencyThreshold:Number(a),fallbackSamplingRatio:Number(n)})))},errorMessage:o})},[M.ServiceNameSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[C.ServicesNameFilters],l=e[C.ServicesNameFilters]||[];return t(T,{name:"servicesNameFilters",limitFieldsPerRow:2,columns:Bn,values:l,setValues:e=>{a(C.ServicesNameFilters,e.map(({serviceName:e,samplingRatio:t,fallbackSamplingRatio:a})=>({serviceName:e,samplingRatio:Number(t),fallbackSamplingRatio:Number(a)})))},errorMessage:o})},[M.SpanAttributeSampler]:({value:e,setValue:a,formErrors:n})=>{const o=n[C.AttributeFilters],l=(e[C.AttributeFilters]||[]).map(({serviceName:e,attributeKey:t,fallbackSamplingRatio:a,condition:n})=>{const o=Object.entries(n).filter(([e,t])=>t)[0][0];return{serviceName:e,attributeKey:t,fallbackSamplingRatio:a,condition:o,operation:n[o]?.operation,expectedValue:n[o]?.expectedValue,jsonPath:n[o]?.jsonPath}});return t(T,{name:"attributeFilters",limitFieldsPerRow:2,columns:_n,values:l,setValues:e=>{a(C.AttributeFilters,e.map(({serviceName:e,attributeKey:t,fallbackSamplingRatio:a,condition:n,operation:o,expectedValue:l,jsonPath:i})=>{const s={serviceName:e,attributeKey:t,fallbackSamplingRatio:Number(a),condition:{[n]:{operation:o,expectedValue:l}}};return i&&(s.condition[n].jsonPath=i),s}))},errorMessage:o})},[M.URLTemplatization]:({value:n,setValue:l,formErrors:i})=>{const s=m(),r=n[Ln]||[{filterK8sNamespace:"",workloadFilters:[],templatizationRules:[{template:""}],notes:""}],c=e=>l(Ln,e),d=(e,t)=>c(r.map((a,n)=>n===e?{...a,...t}:a));return e(a,{children:[r.map((a,n)=>e(o,{children:[t(R,{}),e(h,{$gap:12,children:[e(g,{$justifyContent:"space-between",$alignItems:"center",children:[t(S,{label:`Rule Group ${n+1}`}),t(O,{leftIcon:()=>t(Aa,{fill:s.v2.colors.red[500]}),variant:P.Secondary,size:$.S,onClick:()=>{return e=n,c(r.filter((t,a)=>a!==e));var e},disabled:1===r.length})]}),t(w,{name:`urlGroup-${n}-namespace`,label:"Namespace",placeholder:"All namespaces",tooltip:"Filter rules to a specific Kubernetes namespace.",value:a.filterK8sNamespace||"",onChange:e=>d(n,{filterK8sNamespace:e.target.value})}),t(T,{name:`urlGroup-${n}-workloadFilters`,label:"Workload filters",tooltip:"Optionally scope templates to specific workloads.",columns:Vn,values:a.workloadFilters||[],setValues:e=>d(n,{workloadFilters:e})}),t(x,{name:`urlGroup-${n}-templates`,label:"Templates",required:!0,placeholder:"e.g. /user/{id}",values:a.templatizationRules.map(e=>e.template),setValues:e=>d(n,{templatizationRules:e.map(e=>({template:e}))})})]}),t(k,{errorMessage:i[Ln]})]},`url-templatization-group-${n}`)),t(O,{variant:P.Secondary,label:"Add rule group",leftIcon:Ea,onClick:()=>c([...r,{filterK8sNamespace:"",workloadFilters:[],templatizationRules:[{template:""}],notes:""}])}),t(R,{})]})}},Un=({actionType:e,value:a,setValue:n,formErrors:o})=>{if(!e)return null;const l=zn[e];return l?t(l,{value:a,setValue:n,formErrors:o}):null},jn={type:"",disabled:!1,name:"",notes:"",signals:[],fields:{}},Xn=r({selectedOption:null,onSelectOption:()=>{},genericForm:void 0,validateFormData:()=>({preparedFormData:V(jn)}),errorMessage:void 0}),Hn=({children:e})=>{const[a,n]=l(null),[o,s]=l(void 0),r=L(jn),c=i(e=>{r.resetFormData(),r.handleErrorChange(void 0,void 0,{}),s(void 0),e?.type&&r.handleFormChange("type",e.type),n(e)},[]),d=i(()=>{if(!a)return{errorMessage:"No action type selected",preparedFormData:V(jn)};const e=(t=r.formData,V(t));var t;const n={};r.handleErrorChange(void 0,void 0,n);const o=Object.keys(n).length>0?"Invalid form values":void 0;return s(o),{errorMessage:o,preparedFormData:e}},[r,a]);return t(Xn.Provider,{value:{selectedOption:a,onSelectOption:c,genericForm:r,validateFormData:d,errorMessage:o},children:e})},Wn=()=>s(Xn),Gn=()=>{const a=m(),{selectedOption:n,genericForm:o}=Wn();if(!o||!n)return t(B,{title:"No active form"});const{formData:l,handleFormChange:i,formErrors:s}=o;return e(h,{$gap:24,children:[e(g,{$gap:12,$justifyContent:"space-between",children:[t(f,{size:v.XXS,children:n.docsDescription}),t(O,{label:"Docs",leftIcon:xa,variant:P.Text,size:$.S,onClick:()=>window.open(`${_}${n.docsEndpoint}`,"_blank","noopener noreferrer")})]}),t(z,{options:[{icon:Ra,label:"Enabled",value:!1,selectedBgColor:a.v2.colors.green[800]},{icon:Oa,label:"Disabled",value:!0,selectedBgColor:a.v2.colors.red[800]}],selected:l.disabled,setSelected:e=>i("disabled",e)}),t(un,{title:"Signals for processing",allowedSignals:n.allowedSignals,selectedSignals:l.signals||[],setSelectedSignals:e=>i("signals",e),errorMessage:s.signals}),t(w,{name:"actionName",label:"Action name",placeholder:"Use a name that describes the action...",value:l.name||"",onChange:({target:{value:e}})=>i("name",e),errorMessage:s.name}),t(Un,{actionType:n.type,value:l.fields,setValue:(e,t)=>i(`fields.${e}`,t),formErrors:s}),t(U,{name:"notes",label:"Notes",placeholder:"Your personal notes...",value:l.notes||"",onChange:({target:{value:e}})=>i("notes",e),errorMessage:s.notes})]})},qn=({signals:e,fields:a,disabled:n,formData:o,handleFormChange:l,formErrors:i})=>a?.map(({renderCondition:a,componentType:s,type:r,name:c,title:d,tooltip:u,placeholder:p,value:m,required:h,options:g})=>{if(!(!a||j(a,e,o.fields)))return null;const b=c,f=o.fields.find(e=>e.key===b),v=f?f.value:m;return t(pn,{componentType:s,inputType:r,name:b,label:d,tooltip:u,disabled:n,required:h,placeholder:p,errorMessage:i[b],dropdownOptions:g,value:v||"",setValue:e=>l(b,e)},b)}),Kn={type:"",name:"",currentStreamName:"",disabled:!1,exportedSignals:{logs:!1,metrics:!1,traces:!1},fields:[]},Yn={activeForm:null,onChangeActiveForm:()=>{},genericForm:void 0,formErrorMessage:void 0,validateFormData:()=>({isOk:!1,preparedFormData:V(Kn)}),unsavedDestinations:[],thisUnsavedDestination:void 0,setUnsavedDestinations:()=>{},addUnsavedDestination:()=>{},updateUnsavedDestination:()=>{},deleteUnsavedDestination:()=>{}},Jn=r(Yn),Qn=({children:e})=>{const{selectedStreamName:a}=X(),[o,s]=l(null),[r,d]=l(),[u,p]=l(Yn.unsavedDestinations),m=c(()=>"number"==typeof o?.unsavedIdx?u[o.unsavedIdx]:void 0,[o,u]),h=i((e,t)=>{o&&(p(t=>[...t,{...e,option:o.option}]),s(t?e=>e?{...e,listType:H.UNSAVED,unsavedIdx:u.length}:null:null))},[o,u.length]),g=i((e,t,a)=>{o&&(p(a=>a.map((a,n)=>n===e?{...a,...t,option:o.option}:a)),s(a?e=>e?{...e,listType:H.UNSAVED}:null:null))},[o]),b=i(e=>{p(t=>t.filter((t,a)=>a!==e)),s(null)},[]),f=L({...Kn,currentStreamName:a});n(()=>{if(o)if(m)f.handleFormChange(void 0,void 0,m.formData);else{f.handleFormChange("type",o.option.type),f.handleFormChange("name",o.option.displayName),f.handleFormChange("disabled",!1);const e=W(o.option.supportedSignals);f.handleFormChange("exportedSignals",{logs:e.includes(G.Logs),metrics:e.includes(G.Metrics),traces:e.includes(G.Traces)}),f.handleFormChange("fields",o.dynamicFields.map(e=>({key:e.name,value:e.value})))}},[o,m]);const v=i(e=>{var t;f.resetFormData(),f.handleErrorChange(void 0,void 0,{}),d(void 0),s(e?{...e,dynamicFields:e.option?.fields?(t=e.option.fields,t.filter(e=>!!e).map(e=>{const{name:t,componentType:a,componentProperties:n,displayName:o,initialValue:l,renderCondition:i}=e,s=a===F.Dropdown,r=K(n,{});return{componentType:a,renderCondition:i,name:t,title:o,value:l,placeholder:r.placeholder||(s?"Select an option":void 0),options:s&&Array.isArray(r.values)?r.values.map(e=>({id:e,value:e})):void 0,...r}})):[]}:null)},[]),y=i(()=>{const e=V(f.formData),t={};o?.dynamicFields.forEach(({name:a,required:n})=>{if(n){const n=e.fields.find(e=>e.key===a)?.value;D(n)&&(t[a]=Y.FIELD_IS_REQUIRED)}});q(e.exportedSignals).length||(t.exportedSignals=Y.FIELD_IS_REQUIRED);const a=0===Object.keys(t).length?void 0:"Invalid form values";return f.handleErrorChange(void 0,void 0,t),d(a),{errorMessage:a,preparedFormData:e}},[f,o]);return t(Jn.Provider,{value:{activeForm:o,onChangeActiveForm:v,genericForm:f,formErrorMessage:r,validateFormData:y,unsavedDestinations:u,thisUnsavedDestination:m,setUnsavedDestinations:p,addUnsavedDestination:h,updateUnsavedDestination:g,deleteUnsavedDestination:b},children:e})},Zn=()=>s(Jn),eo=p(g)`
|
|
22
22
|
position: sticky;
|
|
23
23
|
bottom: 0;
|
|
24
24
|
margin-top: auto;
|
|
25
25
|
padding: 12px 0;
|
|
26
26
|
background-color: ${({theme:e})=>e.v2.colors.silver[900]};
|
|
27
27
|
z-index: 1;
|
|
28
|
-
`,yo=({testConnection:a})=>{const o=m(),{activeForm:r,genericForm:i,validateFormData:s,thisUnsavedDestination:c,addUnsavedDestination:d,updateUnsavedDestination:u,deleteUnsavedDestination:p}=vo(),[f,v]=l(c?.testResult),[b,y]=l(!!c);if(n(()=>{c?(v(c.testResult),y(!0)):(v(void 0),y(!1))},[c]),!i||!r)return t(V,{title:"No active form"});const S=async()=>{if(!r.option.testConnectionSupported)return;const e=await a(Z(i.formData));return v(e),e};return e(h,{$gap:24,style:{minHeight:"100%"},children:[e(g,{$gap:12,$justifyContent:"space-between",children:[f?f.succeeded?t(J,{status:Q.Success,message:f.message||"Connection OK",fullWidth:!0,smallIcon:!0}):t(J,{status:Q.Error,message:f.message||"Connection Failed",fullWidth:!0,smallIcon:!0}):t("div",{}),t(P,{"data-id":"dest-form-docs",label:"Docs",leftIcon:tn,variant:O.Text,size:$.S,onClick:()=>window.open(`${X}/backends/${r.option.type}`,"_blank","noopener noreferrer")})]}),t(B,{options:[{icon:an,label:"Enabled",value:!1,selectedBgColor:o.v2.colors.green[800]},{icon:nn,label:"Disabled",value:!0,selectedBgColor:o.v2.colors.red[800]}],selected:i.formData.disabled,setSelected:e=>i.handleFormChange("disabled",e),disabled:b}),t(Mn,{title:"This connection will monitor:",allowedSignals:W(r.option.supportedSignals),selectedSignals:G(i.formData.exportedSignals),setSelectedSignals:e=>i.handleFormChange("exportedSignals",{logs:e.includes(K.Logs),metrics:e.includes(K.Metrics),traces:e.includes(K.Traces)}),disabled:b,errorMessage:i.formErrors.exportedSignals}),t(w,{label:"Destination name",placeholder:"Use a name that describes the destination...",value:i.formData.name,onChange:({target:{value:e}})=>i.handleFormChange("name",e),disabled:b,errorMessage:i.formErrors.name}),t(po,{signals:G(i.formData.exportedSignals),fields:r.dynamicFields,disabled:b,formData:i.formData,handleFormChange:(e,t)=>{i.handleFormChange("fields",i.formData.fields.map(a=>a.key===e?{...a,value:t}:a))},formErrors:i.formErrors}),e(bo,{$gap:8,$justifyContent:"flex-end",children:[c&&t("div",{style:{width:"150px"},children:t(P,{"data-id":"dest-form-delete",fullWidth:!0,label:"Delete",rightIcon:on,variant:O.Secondary,textColor:o.v2.colors.red[500],onClick:()=>p(r.unsavedIdx)})}),(!c||c.option.testConnectionSupported&&!b)&&t("div",{style:{width:"150px"},children:t(P,{"data-id":"dest-form-test-connection",fullWidth:!0,label:"Test Connection",variant:O.Secondary,onClick:S})}),c&&t("div",b?{style:{width:"150px"},children:t(P,{"data-id":"dest-form-edit",fullWidth:!0,label:"Edit",rightIcon:ln,variant:O.Secondary,onClick:()=>y(!1)})}:{style:{width:"150px"},children:t(P,{"data-id":"dest-form-save",fullWidth:!0,label:"Save Changes",variant:O.Primary,onClick:async()=>{const{errorMessage:e,preparedFormData:t}=s();if(!e){const e=await S(),a=!!e&&!e.succeeded;u(r.unsavedIdx,{formData:t,testResult:e},a)}}})}),!c&&t("div",{style:{width:"150px"},children:t(P,{"data-id":"dest-form-add",fullWidth:!0,label:"Add Destination",variant:O.Primary,onClick:async()=>{const{errorMessage:e,preparedFormData:t}=s();if(!e){const e=await S(),a=!!e&&!e.succeeded;d({formData:t,testResult:e},a)}}})})]})]})},So=[{id:ee.FilePath,label:"Collect file path",tooltip:"Indicates whether to record the `code.filepath` attribute."},{id:ee.Function,label:"Collect function",tooltip:"Indicates whether to record the `code.function` attribute."},{id:ee.LineNumber,label:"Collect line number",tooltip:"Indicates whether to record the `code.lineno` attribute."}],Co=[{id:ee.Column,label:"Collect column",tooltip:"Indicates whether to record the `code.column` attribute."},{id:ee.Namespace,label:"Collect namespace",tooltip:"Indicates whether to record the `code.namespace` attribute."},{id:ee.StackTrace,label:"Collect stacktrace",tooltip:"Indicates whether to record the `code.stacktrace` attribute."}],ko=["*"],wo=[{id:ne.HttpRequest,label:"Collect HTTP request",tooltip:""},{id:ne.HttpResponse,label:"Collect HTTP response",tooltip:""},{id:ne.DbQuery,label:"Collect DB query",tooltip:""},{id:ne.Messaging,label:"Collect messaging",tooltip:""}],To={[re.Java]:[new le("","")],[re.Golang]:[new oe("")]},xo={[ie.CodeAttributes]:({value:o,setValue:l,formErrors:r})=>{const i=m(),s=r.codeAttributes,d=c(()=>Object.entries(o.codeAttributes||{}).filter(([e,t])=>!!t).map(([e])=>e),[o]);n(()=>{if(!d.length&&!s){const e={[ee.FilePath]:!0,[ee.Function]:!0,[ee.LineNumber]:!0,[ee.Column]:null,[ee.Namespace]:null,[ee.StackTrace]:null};l("codeAttributes",e)}},[]);const u=(e,t)=>{const a=t?[...d,e]:d.filter(t=>t!==e),n=Object.values(ee).reduce((e,t)=>(e[t]=!!a.includes(t)||null,e),{});l("codeAttributes",n)};return e(a,{children:[e(h,{$gap:12,children:[t(v,{size:b.XS,color:i.v2.colors.silver[200],nowrap:!0,children:"Recommended data to collect"}),t(h,{$gap:6,children:So.map(({id:e,label:a,tooltip:n})=>t(te,{text:n,withIcon:!0,children:t(f,{label:a,value:d.includes(e),onChange:t=>u(e,t)})},e))}),t(k,{errorMessage:s})]}),e(h,{$gap:12,children:[t(v,{size:b.XS,color:i.v2.colors.silver[200],nowrap:!0,children:"Verbose data to collect"}),t(h,{$gap:6,children:Co.map(({id:e,label:a,tooltip:n})=>t(te,{text:n,withIcon:!0,children:t(f,{label:a,value:d.includes(e),onChange:t=>u(e,t)})},e))}),t(k,{errorMessage:s})]})]})},[ie.CustomInstrumentation]:({value:o,setValue:l,formErrors:r})=>{const i=r.customInstrumentations,s=c(()=>(o?.customInstrumentations?.[re.Golang]||[]).map(e=>new oe(e.packageName,e.functionName,e.receiverName,e.receiverMethodName)),[o]),d=c(()=>(o?.customInstrumentations?.[re.Java]||[]).map(e=>new le(e.className,e.methodName)),[o]);return n(()=>{o?.customInstrumentations||i||l("customInstrumentations",{[re.Golang]:To[re.Golang],[re.Java]:To[re.Java]})},[]),e(a,{children:[e(h,{children:[e(g,{$gap:8,children:[t(rn,{}),t(C,{label:"Golang custom probes"})]}),t(D,{name:"golangProbes",columns:[{keyName:"packageName",label:"Package name",placeholder:"e.g. github.com/my-org/my-package",tooltip:"The full import path of the package containing the function or method to be instrumented."},{keyName:"functionName",label:"Function name",placeholder:"e.g. myFunction",tooltip:"The name of the function to be instrumented. Leave empty if instrumenting a receiver method."},{keyName:"receiverName",label:"Receiver name",placeholder:"e.g. myReceiver",tooltip:"The name of the receiver type if instrumenting a method. Leave empty if instrumenting a standalone function."},{keyName:"receiverMethodName",label:"Receiver method name",placeholder:"e.g. myMethod",tooltip:"The name of the method to be instrumented. Leave empty if instrumenting a standalone function."}],values:s,setValues:e=>{const t={};t[re.Golang]=e.map(e=>new oe(e.packageName,e.functionName,e.receiverName,e.receiverMethodName)),t[re.Java]=d,l("customInstrumentations",t)},errorMessage:i,limitFieldsPerRow:2})]}),e(h,{children:[e(g,{$gap:8,children:[t(sn,{}),t(C,{label:"Java custom probes"})]}),t(D,{name:"javaProbes",columns:[{keyName:"className",label:"Class name",placeholder:"e.g. com.example.MyClass",tooltip:"The name of the class to be instrumented."},{keyName:"methodName",label:"Method name",placeholder:"e.g. myMethod",tooltip:"The name of the method to be instrumented."}],values:d,setValues:e=>{const t={};t[re.Golang]=s,t[re.Java]=e.map(e=>new le(e.className,e.methodName)),l("customInstrumentations",t)},errorMessage:i,limitFieldsPerRow:2})]})]})},[ie.HeadersCollection]:({value:e,setValue:a,formErrors:o})=>{const l=o.headersCollection,r=c(()=>e?.headersCollection?.[ae.HeaderKeys]||[],[e]),i=e=>{const t={[ae.HeaderKeys]:e};a("headersCollection",t)};return n(()=>{r.length||l||i(ko)},[]),t(E,{name:"headerKeys",label:"Header keys",tooltip:"Specify which headers you want to collect",helpMessage:"Asterisk (*) will collect all headers",values:r,setValues:i,errorMessage:l})},[ie.PayloadCollection]:({value:a,setValue:o,formErrors:l})=>{const r=m(),i=l.payloadCollection,s=c(()=>Object.entries(a.payloadCollection||{}).filter(([e,t])=>!!t).map(([e])=>e),[a]);n(()=>{if(!s.length&&!i){const e={[ne.HttpRequest]:{},[ne.HttpResponse]:{},[ne.DbQuery]:{},[ne.Messaging]:{}};o("payloadCollection",e)}},[]);return e(h,{$gap:12,children:[t(v,{size:b.XS,color:r.v2.colors.silver[200],nowrap:!0,children:"Type of data to collect"}),t(h,{$gap:6,children:wo.map(({id:e,label:a,tooltip:n})=>t(te,{text:n,withIcon:!0,children:t(f,{label:a,value:s.includes(e),onChange:t=>((e,t)=>{const a=t?[...s,e]:s.filter(t=>t!==e),n={[ne.HttpRequest]:a.includes(ne.HttpRequest)?{}:null,[ne.HttpResponse]:a.includes(ne.HttpResponse)?{}:null,[ne.DbQuery]:a.includes(ne.DbQuery)?{}:null,[ne.Messaging]:a.includes(ne.Messaging)?{}:null};o("payloadCollection",n)})(e,t)})},e))}),t(k,{errorMessage:i})]})},[ie.UnknownType]:null},Do=({ruleType:e,value:a,setValue:n,formErrors:o})=>{if(!e)return null;const l=xo[e];return l?t(l,{value:a,setValue:n,formErrors:o}):null},No={disabled:!1,ruleName:"",notes:"",workloads:null,instrumentationLibraries:null,payloadCollection:null,codeAttributes:null,headersCollection:null,customInstrumentations:null},Ao=s({selectedOption:null,onSelectOption:()=>{},genericForm:void 0,validateFormData:()=>({preparedFormData:z(No)}),errorMessage:void 0}),Io=({children:e})=>{const[a,n]=l(null),[o,i]=l(void 0),s=L(No),c=r(e=>{s.resetFormData(),s.handleErrorChange(void 0,void 0,{}),i(void 0),n(e)},[]),d=r(()=>{if(!a)return{errorMessage:"No rule type selected",preparedFormData:z(No)};const e=(e=>{const t=z(e);return t.headersCollection?.[ae.HeaderKeys]?.length&&(t.headersCollection[ae.HeaderKeys]=t.headersCollection[ae.HeaderKeys].map(e=>e.trim()).filter(e=>e)),t.customInstrumentations?.[re.Golang]?.length&&(t.customInstrumentations[re.Golang]=t.customInstrumentations[re.Golang].map(e=>new oe(e.packageName,e.functionName,e.receiverName,e.receiverMethodName)).filter(e=>e.Verify())),t.customInstrumentations?.[re.Java]?.length&&(t.customInstrumentations[re.Java]=t.customInstrumentations[re.Java].map(e=>new le(e.className,e.methodName)).filter(e=>e.Verify())),t})(s.formData),t={};switch(a.type){case ie.CodeAttributes:Object.values(e.codeAttributes||{}).some(e=>null!=e)||(t.codeAttributes="Code attributes are required");break;case ie.PayloadCollection:Object.values(e.payloadCollection||{}).some(e=>null!=e)||(t.payloadCollection="Payload collection are required");break;case ie.HeadersCollection:e.headersCollection?.[ae.HeaderKeys]?.length||(t.headersCollection="Header keys are required");break;case ie.CustomInstrumentation:e.customInstrumentations?.[re.Golang]?.length||e.customInstrumentations?.[re.Java]?.length||(t.customInstrumentations="Custom instrumentation are required")}s.handleErrorChange(void 0,void 0,t);const n=Object.keys(t).length>0?"Invalid form values":void 0;return i(n),{errorMessage:n,preparedFormData:e}},[s,a]);return t(Ao.Provider,{value:{selectedOption:a,onSelectOption:c,genericForm:s,validateFormData:d,errorMessage:o},children:e})},Eo=()=>i(Ao),Ro=()=>{const a=m(),{selectedOption:n,genericForm:o}=Eo();if(!o||!n)return t(V,{title:"No active form"});const{formData:l,handleFormChange:r,formErrors:i}=o;return e(h,{$gap:24,children:[e(g,{$gap:12,$justifyContent:"space-between",children:[t(v,{size:b.XXS,children:n.docsDescription}),t(P,{label:"Docs",leftIcon:tn,variant:O.Text,size:$.S,onClick:()=>window.open(`${X}${n.docsEndpoint}`,"_blank","noopener noreferrer")})]}),e(g,{$gap:12,children:[t(v,{size:b.XS,color:a.v2.colors.silver[200],nowrap:!0,children:"Supported Languages:"}),n.supportedLanguages.map(e=>t(se,{label:ce[e],leftIcon:de(e),status:Q.Default,useSecondaryTone:!0},e))]}),t(B,{options:[{icon:an,label:"Enabled",value:!1,selectedBgColor:a.v2.colors.green[800]},{icon:nn,label:"Disabled",value:!0,selectedBgColor:a.v2.colors.red[800]}],selected:l.disabled,setSelected:e=>r("disabled",e)}),t(w,{name:"ruleName",label:"Rule name",placeholder:"Use a name that describes the rule...",value:l.ruleName,onChange:({target:{value:e}})=>r("ruleName",e),errorMessage:i.ruleName}),t(Do,{ruleType:n.type,value:l,setValue:(e,t)=>r(e,t),formErrors:i}),t(_,{name:"notes",label:"Notes",placeholder:"Your personal notes...",value:l.notes,onChange:({target:{value:e}})=>r("notes",e),errorMessage:i.notes})]})},Po=s({isFetching:!1,formData:[],handleSourceChange:()=>{},handleSelectAll:()=>{},formDiff:{},isFormDirty:!1}),$o=({children:e,selectedConnectionIds:a,getAllClusterSnapshots:o,fetchNamespacesWithWorkloads:i,initialInputs:s})=>{const{tier:d}=ue(),u=d===ve.Onprem,{selectedStreamName:p}=j(),[m,h]=l(!1),[g,f]=l(null),v=r(async()=>{try{if(h(!0),o){const e=await o();e&&f(e)}else if(i){const e=await i();e.data?.length&&f({clusters:[{clusterId:me,clusterName:pe,namespaces:e.data.map(e=>({name:e.name,selected:e.selected,workloads:e.sources?.map(e=>({namespace:e.namespace,name:e.name,kind:e.kind,selected:e.selected}))||[]}))}]})}}catch(e){}finally{h(!1)}},[]);n(()=>{v()},[]);const[b,y]=l([]);n(()=>{g&&y(e=>{const t=((e,t)=>z(((e,t)=>e.clusters.filter(({clusterId:e})=>!t||t.includes(e)))(e,t)))(g,a);return t.map(t=>{const a=e?.find(e=>e.clusterId===t.clusterId),n=a??t;if(s?.[t.clusterId]){const e=s[t.clusterId],a=z(n);return e.forEach(e=>{const t=a.namespaces.find(t=>t.name===e.namespace);if(t)if(e.name&&e.kind){const a=t.workloads.find(t=>t.name===e.name&&t.kind===e.kind);a&&(a.selected=e.selected)}else t.selected=e.selected,e.selected&&t.workloads.forEach(e=>{he.has(e.kind)&&!u||(e.selected=!0)})}),a}return n})})},[g,a,s]);const{formDiff:S,isFormDirty:C}=c(()=>{const e=((e,t,a)=>{const n={};return e.forEach(e=>{e.namespaces.forEach(o=>{const l=t.find(t=>t.clusterId===e.clusterId)?.namespaces.find(e=>e.name===o.name),r=o.selected||!1,i=r!==l?.selected;if(i&&(n[e.clusterId]||(n[e.clusterId]=[]),n[e.clusterId].push({namespace:o.name,selected:r,currentStreamName:a}),r&&(n[e.clusterId]=n[e.clusterId].filter(e=>e.namespace!==o.name||e.namespace===o.name&&(!e.name||!e.kind)))),!i||!r){const t=((e,t,a)=>{const n=[];return t.workloads.forEach(o=>{const l=e?.workloads.find(e=>e.name===o.name&&e.kind===o.kind);o.selected!==l?.selected&&n.push({namespace:t.name,name:o.name,kind:o.kind,selected:o.selected||!1,currentStreamName:a})}),n})(l,o,a);t.length>0&&(n[e.clusterId]||(n[e.clusterId]=[]),n[e.clusterId].push(...t))}})}),n})(b,g?.clusters||[],p);return{formDiff:e,isFormDirty:Object.keys(e).length>0}},[b,g,p]),k=r(e=>!u&&he.has(e),[u]),w=r(({clusterId:e,workloadId:t,selected:a,auto:n})=>{y(o=>{const l=z(o),r=l.findIndex(t=>t.clusterId===e);if(-1===r)return l;const i=l[r].namespaces.findIndex(e=>e.name===t.namespace);if(-1===i)return l;if(t.kind&&t.name){const e=l[r].namespaces[i].workloads.findIndex(e=>e.name===t.name&&e.kind===t.kind);if(-1===e)return l;const n="boolean"==typeof a?a:!l[r].namespaces[i].workloads[e].selected;if(l[r].namespaces[i].workloads[e].selected=n,n){l[r].namespaces[i].workloads.filter(e=>!k(e.kind)).every(e=>e.selected)&&(l[r].namespaces[i].selected=!0)}else l[r].namespaces[i].selected=!1}else{const e="boolean"==typeof n?n:!l[r].namespaces[i].selected;l[r].namespaces[i].selected=e,e?l[r].namespaces[i].workloads.forEach(e=>{k(e.kind)||(e.selected=!0)}):"boolean"!=typeof a||a||l[r].namespaces[i].workloads.forEach(e=>{e.selected=!1})}return l})},[k]),T=r(({clusterId:e,namespaceName:t,boolean:a,searchText:n="",searchBy:o="",filters:l})=>{y(r=>{const i=z(r),s=o===be.Namespace?n:"",c=o===be.Source?n:"",d=!!s||!!c||!!l?.showOnlySelected;return i.forEach((n,o)=>{e&&n.clusterId!==e||n.namespaces.forEach(({name:e,workloads:n},r)=>{if(!t||e===t)if(d)if(t){n.forEach((e,t)=>{a&&k(e.kind)||ge(e,c,l||{showOnlySelected:!1})&&(i[o].namespaces[r].workloads[t].selected=a)});const e=i[o].namespaces[r].workloads.filter(e=>!k(e.kind)).every(e=>e.selected);i[o].namespaces[r].selected=e}else{if(!fe(i[o].namespaces[r],s,l||{showOnlySelected:!1}))return;i[o].namespaces[r].selected=a,n.forEach((e,t)=>{a&&k(e.kind)||(i[o].namespaces[r].workloads[t].selected=a)})}else i[o].namespaces[r].selected=a,n.forEach((e,t)=>{a&&k(e.kind)||(i[o].namespaces[r].workloads[t].selected=a)})})}),i})},[k]);return t(Po.Provider,{value:{isFetching:m,formData:b,handleSourceChange:w,handleSelectAll:T,formDiff:S,isFormDirty:C},children:e})},Oo=()=>i(Po),Mo=p.div`
|
|
29
|
-
display: flex;
|
|
30
|
-
align-items: flex-end;
|
|
31
|
-
gap: 16px;
|
|
32
|
-
`,Fo=p.div`
|
|
33
|
-
width: 280px;
|
|
34
|
-
flex-shrink: 0;
|
|
35
|
-
`,Lo=p.div`
|
|
28
|
+
`,to=({testConnection:a})=>{const o=m(),{activeForm:i,genericForm:s,validateFormData:r,thisUnsavedDestination:c,addUnsavedDestination:d,updateUnsavedDestination:u,deleteUnsavedDestination:p}=Zn(),[b,f]=l(c?.testResult),[v,y]=l(!!c);if(n(()=>{c?(f(c.testResult),y(!0)):(f(void 0),y(!1))},[c]),!s||!i)return t(B,{title:"No active form"});const C=async()=>{if(!i.option.testConnectionSupported)return;const e=await a(Z(s.formData));return f(e),e};return e(h,{$gap:24,style:{minHeight:"100%"},children:[e(g,{$gap:12,$justifyContent:"space-between",children:[b?b.succeeded?t(J,{status:Q.Success,message:b.message||"Connection OK",fullWidth:!0,smallIcon:!0}):t(J,{status:Q.Error,message:b.message||"Connection Failed",fullWidth:!0,smallIcon:!0}):t("div",{}),t(O,{"data-id":"dest-form-docs",label:"Docs",leftIcon:xa,variant:P.Text,size:$.S,onClick:()=>window.open(`${_}/backends/${i.option.type}`,"_blank","noopener noreferrer")})]}),t(z,{options:[{icon:Ra,label:"Enabled",value:!1,selectedBgColor:o.v2.colors.green[800]},{icon:Oa,label:"Disabled",value:!0,selectedBgColor:o.v2.colors.red[800]}],selected:s.formData.disabled,setSelected:e=>s.handleFormChange("disabled",e),disabled:v}),t(un,{title:"This connection will monitor:",allowedSignals:W(i.option.supportedSignals),selectedSignals:q(s.formData.exportedSignals),setSelectedSignals:e=>s.handleFormChange("exportedSignals",{logs:e.includes(G.Logs),metrics:e.includes(G.Metrics),traces:e.includes(G.Traces)}),disabled:v,errorMessage:s.formErrors.exportedSignals}),t(w,{label:"Destination name",placeholder:"Use a name that describes the destination...",value:s.formData.name,onChange:({target:{value:e}})=>s.handleFormChange("name",e),disabled:v,errorMessage:s.formErrors.name}),t(qn,{signals:q(s.formData.exportedSignals),fields:i.dynamicFields,disabled:v,formData:s.formData,handleFormChange:(e,t)=>{s.handleFormChange("fields",s.formData.fields.map(a=>a.key===e?{...a,value:t}:a))},formErrors:s.formErrors}),e(eo,{$gap:8,$justifyContent:"flex-end",children:[c&&t("div",{style:{width:"150px"},children:t(O,{"data-id":"dest-form-delete",fullWidth:!0,label:"Delete",rightIcon:$a,variant:P.Secondary,textColor:o.v2.colors.red[500],onClick:()=>p(i.unsavedIdx)})}),(!c||c.option.testConnectionSupported&&!v)&&t("div",{style:{width:"150px"},children:t(O,{"data-id":"dest-form-test-connection",fullWidth:!0,label:"Test Connection",variant:P.Secondary,onClick:C})}),c&&t("div",v?{style:{width:"150px"},children:t(O,{"data-id":"dest-form-edit",fullWidth:!0,label:"Edit",rightIcon:Pa,variant:P.Secondary,onClick:()=>y(!1)})}:{style:{width:"150px"},children:t(O,{"data-id":"dest-form-save",fullWidth:!0,label:"Save Changes",variant:P.Primary,onClick:async()=>{const{errorMessage:e,preparedFormData:t}=r();if(!e){const e=await C(),a=!!e&&!e.succeeded;u(i.unsavedIdx,{formData:t,testResult:e},a)}}})}),!c&&t("div",{style:{width:"150px"},children:t(O,{"data-id":"dest-form-add",fullWidth:!0,label:"Add Destination",variant:P.Primary,onClick:async()=>{const{errorMessage:e,preparedFormData:t}=r();if(!e){const e=await C(),a=!!e&&!e.succeeded;d({formData:t,testResult:e},a)}}})})]})]})},ao=[{id:ee.FilePath,label:"Collect file path",tooltip:"Indicates whether to record the `code.filepath` attribute."},{id:ee.Function,label:"Collect function",tooltip:"Indicates whether to record the `code.function` attribute."},{id:ee.LineNumber,label:"Collect line number",tooltip:"Indicates whether to record the `code.lineno` attribute."}],no=[{id:ee.Column,label:"Collect column",tooltip:"Indicates whether to record the `code.column` attribute."},{id:ee.Namespace,label:"Collect namespace",tooltip:"Indicates whether to record the `code.namespace` attribute."},{id:ee.StackTrace,label:"Collect stacktrace",tooltip:"Indicates whether to record the `code.stacktrace` attribute."}],oo=["*"],lo=[{id:ne.HttpRequest,label:"Collect HTTP request",tooltip:""},{id:ne.HttpResponse,label:"Collect HTTP response",tooltip:""},{id:ne.DbQuery,label:"Collect DB query",tooltip:""},{id:ne.Messaging,label:"Collect messaging",tooltip:""}],io={[ie.Java]:[new le("","")],[ie.Golang]:[new oe("")]},so={[se.CodeAttributes]:({value:o,setValue:l,formErrors:i})=>{const s=m(),r=i.codeAttributes,d=c(()=>Object.entries(o.codeAttributes||{}).filter(([e,t])=>!!t).map(([e])=>e),[o]);n(()=>{if(!d.length&&!r){const e={[ee.FilePath]:!0,[ee.Function]:!0,[ee.LineNumber]:!0,[ee.Column]:null,[ee.Namespace]:null,[ee.StackTrace]:null};l("codeAttributes",e)}},[]);const u=(e,t)=>{const a=t?[...d,e]:d.filter(t=>t!==e),n=Object.values(ee).reduce((e,t)=>(e[t]=!!a.includes(t)||null,e),{});l("codeAttributes",n)};return e(a,{children:[e(h,{$gap:12,children:[t(f,{size:v.XS,color:s.v2.colors.silver[200],nowrap:!0,children:"Recommended data to collect"}),t(h,{$gap:6,children:ao.map(({id:e,label:a,tooltip:n})=>t(te,{text:n,withIcon:!0,children:t(b,{label:a,value:d.includes(e),onChange:t=>u(e,t)})},e))}),t(k,{errorMessage:r})]}),e(h,{$gap:12,children:[t(f,{size:v.XS,color:s.v2.colors.silver[200],nowrap:!0,children:"Verbose data to collect"}),t(h,{$gap:6,children:no.map(({id:e,label:a,tooltip:n})=>t(te,{text:n,withIcon:!0,children:t(b,{label:a,value:d.includes(e),onChange:t=>u(e,t)})},e))}),t(k,{errorMessage:r})]})]})},[se.CustomInstrumentation]:({value:o,setValue:l,formErrors:i})=>{const s=i.customInstrumentations,r=c(()=>(o?.customInstrumentations?.[ie.Golang]||[]).map(e=>new oe(e.packageName,e.functionName,e.receiverName,e.receiverMethodName)),[o]),d=c(()=>(o?.customInstrumentations?.[ie.Java]||[]).map(e=>new le(e.className,e.methodName)),[o]);return n(()=>{o?.customInstrumentations||s||l("customInstrumentations",{[ie.Golang]:io[ie.Golang],[ie.Java]:io[ie.Java]})},[]),e(a,{children:[e(h,{children:[e(g,{$gap:8,children:[t(Fa,{}),t(S,{label:"Golang custom probes"})]}),t(T,{name:"golangProbes",columns:[{keyName:"packageName",label:"Package name",placeholder:"e.g. github.com/my-org/my-package",tooltip:"The full import path of the package containing the function or method to be instrumented."},{keyName:"functionName",label:"Function name",placeholder:"e.g. myFunction",tooltip:"The name of the function to be instrumented. Leave empty if instrumenting a receiver method."},{keyName:"receiverName",label:"Receiver name",placeholder:"e.g. myReceiver",tooltip:"The name of the receiver type if instrumenting a method. Leave empty if instrumenting a standalone function."},{keyName:"receiverMethodName",label:"Receiver method name",placeholder:"e.g. myMethod",tooltip:"The name of the method to be instrumented. Leave empty if instrumenting a standalone function."}],values:r,setValues:e=>{const t={};t[ie.Golang]=e.map(e=>new oe(e.packageName,e.functionName,e.receiverName,e.receiverMethodName)),t[ie.Java]=d,l("customInstrumentations",t)},errorMessage:s,limitFieldsPerRow:2})]}),e(h,{children:[e(g,{$gap:8,children:[t(Ma,{}),t(S,{label:"Java custom probes"})]}),t(T,{name:"javaProbes",columns:[{keyName:"className",label:"Class name",placeholder:"e.g. com.example.MyClass",tooltip:"The name of the class to be instrumented."},{keyName:"methodName",label:"Method name",placeholder:"e.g. myMethod",tooltip:"The name of the method to be instrumented."}],values:d,setValues:e=>{const t={};t[ie.Golang]=r,t[ie.Java]=e.map(e=>new le(e.className,e.methodName)),l("customInstrumentations",t)},errorMessage:s,limitFieldsPerRow:2})]})]})},[se.HeadersCollection]:({value:e,setValue:a,formErrors:o})=>{const l=o.headersCollection,i=c(()=>e?.headersCollection?.[ae.HeaderKeys]||[],[e]),s=e=>{const t={[ae.HeaderKeys]:e};a("headersCollection",t)};return n(()=>{i.length||l||s(oo)},[]),t(x,{name:"headerKeys",label:"Header keys",tooltip:"Specify which headers you want to collect",helpMessage:"Asterisk (*) will collect all headers",values:i,setValues:s,errorMessage:l})},[se.PayloadCollection]:({value:a,setValue:o,formErrors:l})=>{const i=m(),s=l.payloadCollection,r=c(()=>Object.entries(a.payloadCollection||{}).filter(([e,t])=>!!t).map(([e])=>e),[a]);n(()=>{if(!r.length&&!s){const e={[ne.HttpRequest]:{},[ne.HttpResponse]:{},[ne.DbQuery]:{},[ne.Messaging]:{}};o("payloadCollection",e)}},[]);return e(h,{$gap:12,children:[t(f,{size:v.XS,color:i.v2.colors.silver[200],nowrap:!0,children:"Type of data to collect"}),t(h,{$gap:6,children:lo.map(({id:e,label:a,tooltip:n})=>t(te,{text:n,withIcon:!0,children:t(b,{label:a,value:r.includes(e),onChange:t=>((e,t)=>{const a=t?[...r,e]:r.filter(t=>t!==e),n={[ne.HttpRequest]:a.includes(ne.HttpRequest)?{}:null,[ne.HttpResponse]:a.includes(ne.HttpResponse)?{}:null,[ne.DbQuery]:a.includes(ne.DbQuery)?{}:null,[ne.Messaging]:a.includes(ne.Messaging)?{}:null};o("payloadCollection",n)})(e,t)})},e))}),t(k,{errorMessage:s})]})},[se.UnknownType]:null},ro=({ruleType:e,value:a,setValue:n,formErrors:o})=>{if(!e)return null;const l=so[e];return l?t(l,{value:a,setValue:n,formErrors:o}):null},co={disabled:!1,ruleName:"",notes:"",workloads:null,instrumentationLibraries:null,payloadCollection:null,codeAttributes:null,headersCollection:null,customInstrumentations:null},uo=r({selectedOption:null,onSelectOption:()=>{},genericForm:void 0,validateFormData:()=>({preparedFormData:V(co)}),errorMessage:void 0}),po=({children:e})=>{const[a,n]=l(null),[o,s]=l(void 0),r=L(co),c=i(e=>{r.resetFormData(),r.handleErrorChange(void 0,void 0,{}),s(void 0),n(e)},[]),d=i(()=>{if(!a)return{errorMessage:"No rule type selected",preparedFormData:V(co)};const e=(e=>{const t=V(e);return t.headersCollection?.[ae.HeaderKeys]?.length&&(t.headersCollection[ae.HeaderKeys]=t.headersCollection[ae.HeaderKeys].map(e=>e.trim()).filter(e=>e)),t.customInstrumentations?.[ie.Golang]?.length&&(t.customInstrumentations[ie.Golang]=t.customInstrumentations[ie.Golang].map(e=>new oe(e.packageName,e.functionName,e.receiverName,e.receiverMethodName)).filter(e=>e.Verify())),t.customInstrumentations?.[ie.Java]?.length&&(t.customInstrumentations[ie.Java]=t.customInstrumentations[ie.Java].map(e=>new le(e.className,e.methodName)).filter(e=>e.Verify())),t})(r.formData),t={};switch(a.type){case se.CodeAttributes:Object.values(e.codeAttributes||{}).some(e=>null!=e)||(t.codeAttributes="Code attributes are required");break;case se.PayloadCollection:Object.values(e.payloadCollection||{}).some(e=>null!=e)||(t.payloadCollection="Payload collection are required");break;case se.HeadersCollection:e.headersCollection?.[ae.HeaderKeys]?.length||(t.headersCollection="Header keys are required");break;case se.CustomInstrumentation:e.customInstrumentations?.[ie.Golang]?.length||e.customInstrumentations?.[ie.Java]?.length||(t.customInstrumentations="Custom instrumentation are required")}r.handleErrorChange(void 0,void 0,t);const n=Object.keys(t).length>0?"Invalid form values":void 0;return s(n),{errorMessage:n,preparedFormData:e}},[r,a]);return t(uo.Provider,{value:{selectedOption:a,onSelectOption:c,genericForm:r,validateFormData:d,errorMessage:o},children:e})},mo=()=>s(uo),ho=()=>{const a=m(),{selectedOption:n,genericForm:o}=mo();if(!o||!n)return t(B,{title:"No active form"});const{formData:l,handleFormChange:i,formErrors:s}=o;return e(h,{$gap:24,children:[e(g,{$gap:12,$justifyContent:"space-between",children:[t(f,{size:v.XXS,children:n.docsDescription}),t(O,{label:"Docs",leftIcon:xa,variant:P.Text,size:$.S,onClick:()=>window.open(`${_}${n.docsEndpoint}`,"_blank","noopener noreferrer")})]}),e(g,{$gap:12,children:[t(f,{size:v.XS,color:a.v2.colors.silver[200],nowrap:!0,children:"Supported Languages:"}),n.supportedLanguages.map(e=>t(re,{label:ce[e],leftIcon:de(e),status:Q.Default,useSecondaryTone:!0},e))]}),t(z,{options:[{icon:Ra,label:"Enabled",value:!1,selectedBgColor:a.v2.colors.green[800]},{icon:Oa,label:"Disabled",value:!0,selectedBgColor:a.v2.colors.red[800]}],selected:l.disabled,setSelected:e=>i("disabled",e)}),t(w,{name:"ruleName",label:"Rule name",placeholder:"Use a name that describes the rule...",value:l.ruleName,onChange:({target:{value:e}})=>i("ruleName",e),errorMessage:s.ruleName}),t(ro,{ruleType:n.type,value:l,setValue:(e,t)=>i(e,t),formErrors:s}),t(U,{name:"notes",label:"Notes",placeholder:"Your personal notes...",value:l.notes,onChange:({target:{value:e}})=>i("notes",e),errorMessage:s.notes})]})},go=r({isFetching:!1,formData:[],handleSourceChange:()=>{},handleSelectAll:()=>{},formDiff:{},isFormDirty:!1}),bo=({children:e,selectedConnectionIds:a,getAllClusterSnapshots:o,fetchNamespacesWithWorkloads:s,initialInputs:r})=>{const{tier:d}=ue(),u=d===fe.Onprem,{selectedStreamName:p}=X(),[m,h]=l(!1),[g,b]=l(null),f=i(async()=>{try{if(h(!0),o){const e=await o();e&&b(e)}else if(s){const e=await s();e.data?.length&&b({clusters:[{clusterId:me,clusterName:pe,namespaces:e.data.map(e=>({name:e.name,selected:e.selected,workloads:e.sources?.map(e=>({namespace:e.namespace,name:e.name,kind:e.kind,selected:e.selected}))||[]}))}]})}}catch(e){}finally{h(!1)}},[]);n(()=>{f()},[]);const[v,y]=l([]);n(()=>{g&&y(e=>{const t=((e,t)=>V(((e,t)=>e.clusters.filter(({clusterId:e})=>!t||t.includes(e)))(e,t)))(g,a);return t.map(t=>{const a=e?.find(e=>e.clusterId===t.clusterId),n=a??t;if(r?.[t.clusterId]){const e=r[t.clusterId],a=V(n);return e.forEach(e=>{const t=a.namespaces.find(t=>t.name===e.namespace);if(t)if(e.name&&e.kind){const a=t.workloads.find(t=>t.name===e.name&&t.kind===e.kind);a&&(a.selected=e.selected)}else t.selected=e.selected,e.selected&&t.workloads.forEach(e=>{he.has(e.kind)&&!u||(e.selected=!0)})}),a}return n})})},[g,a,r]);const{formDiff:C,isFormDirty:S}=c(()=>{const e=((e,t,a)=>{const n={};return e.forEach(e=>{e.namespaces.forEach(o=>{const l=t.find(t=>t.clusterId===e.clusterId)?.namespaces.find(e=>e.name===o.name),i=o.selected||!1,s=i!==l?.selected;if(s&&(n[e.clusterId]||(n[e.clusterId]=[]),n[e.clusterId].push({namespace:o.name,selected:i,currentStreamName:a}),i&&(n[e.clusterId]=n[e.clusterId].filter(e=>e.namespace!==o.name||e.namespace===o.name&&(!e.name||!e.kind)))),!s||!i){const t=((e,t,a)=>{const n=[];return t.workloads.forEach(o=>{const l=e?.workloads.find(e=>e.name===o.name&&e.kind===o.kind);o.selected!==l?.selected&&n.push({namespace:t.name,name:o.name,kind:o.kind,selected:o.selected||!1,currentStreamName:a})}),n})(l,o,a);t.length>0&&(n[e.clusterId]||(n[e.clusterId]=[]),n[e.clusterId].push(...t))}})}),n})(v,g?.clusters||[],p);return{formDiff:e,isFormDirty:Object.keys(e).length>0}},[v,g,p]),k=i(e=>!u&&he.has(e),[u]),w=i(({clusterId:e,workloadId:t,selected:a,auto:n})=>{y(o=>{const l=V(o),i=l.findIndex(t=>t.clusterId===e);if(-1===i)return l;const s=l[i].namespaces.findIndex(e=>e.name===t.namespace);if(-1===s)return l;if(t.kind&&t.name){const e=l[i].namespaces[s].workloads.findIndex(e=>e.name===t.name&&e.kind===t.kind);if(-1===e)return l;const n="boolean"==typeof a?a:!l[i].namespaces[s].workloads[e].selected;if(l[i].namespaces[s].workloads[e].selected=n,n){l[i].namespaces[s].workloads.filter(e=>!k(e.kind)).every(e=>e.selected)&&(l[i].namespaces[s].selected=!0)}else l[i].namespaces[s].selected=!1}else{const e="boolean"==typeof n?n:!l[i].namespaces[s].selected;l[i].namespaces[s].selected=e,e?l[i].namespaces[s].workloads.forEach(e=>{k(e.kind)||(e.selected=!0)}):"boolean"!=typeof a||a||l[i].namespaces[s].workloads.forEach(e=>{e.selected=!1})}return l})},[k]),I=i(({clusterId:e,namespaceName:t,boolean:a,searchText:n="",searchBy:o="",filters:l})=>{y(i=>{const s=V(i),r=o===ve.Namespace?n:"",c=o===ve.Source?n:"",d=!!r||!!c||!!l?.showOnlySelected;return s.forEach((n,o)=>{e&&n.clusterId!==e||n.namespaces.forEach(({name:e,workloads:n},i)=>{if(!t||e===t)if(d)if(t){n.forEach((e,t)=>{a&&k(e.kind)||ge(e,c,l||{showOnlySelected:!1})&&(s[o].namespaces[i].workloads[t].selected=a)});const e=s[o].namespaces[i].workloads.filter(e=>!k(e.kind)).every(e=>e.selected);s[o].namespaces[i].selected=e}else{if(!be(s[o].namespaces[i],r,l||{showOnlySelected:!1}))return;s[o].namespaces[i].selected=a,n.forEach((e,t)=>{a&&k(e.kind)||(s[o].namespaces[i].workloads[t].selected=a)})}else s[o].namespaces[i].selected=a,n.forEach((e,t)=>{a&&k(e.kind)||(s[o].namespaces[i].workloads[t].selected=a)})})}),s})},[k]);return t(go.Provider,{value:{isFetching:m,formData:v,handleSourceChange:w,handleSelectAll:I,formDiff:C,isFormDirty:S},children:e})},fo=()=>s(go),vo=p.div`
|
|
36
29
|
display: flex;
|
|
37
30
|
flex-direction: column;
|
|
38
|
-
gap: 4px;
|
|
39
|
-
`,zo=p.div`
|
|
40
|
-
flex: 1;
|
|
41
|
-
min-width: 0;
|
|
42
|
-
`,Vo=[{value:"Relevance",label:"Relevance"},{value:"Error",label:"Error"},{value:"Duration",label:"Duration"}],Xo=({category:a,formState:n,onChange:o})=>{const l=r(e=>o({name:e.target.value}),[o]),i=r(e=>o({notes:e.target.value}),[o]),s=r(e=>{o({ruleType:e,keepErrors:"Error"===e})},[o]);return t(ye,{children:e(Mo,{children:[t(Fo,{children:t(w,{name:"sampling-input-rule-name",label:Ce,tooltip:"Optional. Give this rule a name for easier identification.",placeholder:Se,value:n.name,onChange:l})}),"highlyRelevant"===a&&e(Lo,{children:[t(C,{label:ke}),t(B,{size:we.S,options:Vo,selected:n.ruleType,setSelected:s})]}),t(zo,{children:t(w,{name:"sampling-input-note",label:De,tooltip:xe,placeholder:Te,value:n.notes,onChange:i})})]})})},Bo=p.div`
|
|
43
|
-
display: flex;
|
|
44
|
-
flex-wrap: wrap;
|
|
45
|
-
align-items: flex-end;
|
|
46
|
-
gap: 16px;
|
|
47
|
-
`,_o=p.div`
|
|
48
|
-
display: flex;
|
|
49
|
-
align-items: flex-end;
|
|
50
|
-
gap: 16px;
|
|
51
|
-
padding: 12px 16px;
|
|
52
|
-
border-radius: 8px;
|
|
53
|
-
background-color: ${({theme:e})=>e.v2.colors.black[500]};
|
|
54
|
-
`,Uo=p.div`
|
|
55
|
-
display: flex;
|
|
56
|
-
align-items: flex-end;
|
|
57
|
-
gap: 10px;
|
|
58
|
-
flex: 1;
|
|
59
|
-
`,jo=p.div`
|
|
60
|
-
display: flex;
|
|
61
|
-
align-items: center;
|
|
62
|
-
height: 32px;
|
|
63
|
-
`,Ho=p.div`
|
|
64
|
-
display: flex;
|
|
65
|
-
align-items: center;
|
|
66
|
-
height: 32px;
|
|
67
|
-
`,Wo=()=>t(Ho,{children:t(v,{size:b.XS,weight:500,children:"And"})}),Ko=[{value:"all",label:"All operations"},{value:"httpServer",label:"HTTP server"},{value:"httpClient",label:"HTTP client"}],Go=[{value:"all",label:"All operations"},{value:"httpServer",label:"HTTP server"},{value:"kafkaConsumer",label:"Kafka consumer"},{value:"kafkaProducer",label:"Kafka producer"}],qo=[{id:"",label:"Any method"},{id:"GET",label:"GET"},{id:"POST",label:"POST"},{id:"PUT",label:"PUT"},{id:"DELETE",label:"DELETE"},{id:"PATCH",label:"PATCH"}],Yo=({category:n,formState:o,onChange:l})=>{const i=c(()=>"noisy"===n?Ko:Go,[n]),s=r(e=>l({operationType:e,route:"",serverAddress:"",method:"",kafkaTopic:""}),[l]),d=r(e=>t=>{t&&l({routeType:e,route:""})},[l]),u=r(e=>l({route:e.target.value}),[l]),p=r(e=>l({serverAddress:e.target.value}),[l]),m=r(e=>l({method:e[0]||""}),[l]),h=r(e=>l({kafkaTopic:e.target.value}),[l]),g="httpServer"===o.operationType||"httpClient"===o.operationType,f="kafkaConsumer"===o.operationType||"kafkaProducer"===o.operationType,v="httpClient"===o.operationType?$e:Oe,b="httpClient"===o.operationType?Me:Fe;return e(ye,{richTitle:{title:Ae,subTitle:Ne},children:[t(B,{size:we.S,options:i,selected:o.operationType,setSelected:s}),g&&e(Bo,{children:["httpClient"===o.operationType&&e(a,{children:[t("div",{style:{flex:1},children:t(w,{name:"sampling-input-server-address",label:Ee,placeholder:Ie,value:o.serverAddress,onChange:p})}),t(Wo,{})]}),e(_o,{children:[e(Uo,{children:[t(jo,{children:t(Re,{"data-id":"sampling-radio-route",value:"route"===o.routeType,onChange:d("route")})}),t(w,{name:"sampling-input-route",label:v,placeholder:Pe,value:"route"===o.routeType?o.route:"",onChange:u,disabled:"route"!==o.routeType})]}),e(Uo,{children:[t(jo,{children:t(Re,{"data-id":"sampling-radio-route-prefix",value:"routePrefix"===o.routeType,onChange:d("routePrefix")})}),t(w,{name:"sampling-input-route-prefix",label:b,placeholder:Pe,value:"routePrefix"===o.routeType?o.route:"",onChange:u,disabled:"routePrefix"!==o.routeType})]})]}),t(Wo,{}),t(Le,{items:qo,selectedIds:[o.method||""],setSelectedIds:e=>m(e),buttonProps:{"data-id":"sampling-btn-method",label:qo.find(e=>e.id===o.method)?.label||"Any method",size:$.S,variant:O.Secondary}})]}),f&&t(w,{name:"sampling-input-kafka-topic",label:ze,placeholder:"Type kafka topic",value:o.kafkaTopic,onChange:h,width:"320px"})]})},Jo=p.div`
|
|
68
|
-
display: flex;
|
|
69
|
-
align-items: flex-end;
|
|
70
|
-
gap: 16px;
|
|
71
|
-
`,Qo=[{value:"all",label:"drop all"},{value:"sample",label:"sample"}],Zo=[{value:"all",label:"keep all"},{value:"sample",label:"sample"}],el=[{value:"50",label:"50%"},{value:"25",label:"25%"},{value:"10",label:"10%"},{value:"1",label:"1%"},{value:"custom",label:"Custom"}],tl=[{value:"10",label:"10%"},{value:"1",label:"1%"},{value:"0.5",label:"0.5%"},{value:"0.1",label:"0.1%"},{value:"custom",label:"Custom"}],al=({category:n,formState:o,onChange:l})=>{const i="highlyRelevant"===n,s=i?Zo:Qo,c=i?Be:_e,d=i?Ve:Xe,u=i?Ue:je,p="noisy"===n?tl:el,m=r(e=>l({percentageMode:e}),[l]),h=r(e=>l({percentagePreset:e}),[l]),g=r(e=>l({customPercentage:e.target.value}),[l]);return e(ye,{richTitle:{title:c,subTitle:d},children:["costReduction"!==n&&t(B,{size:we.S,options:s,selected:o.percentageMode,setSelected:m}),("costReduction"===n||"sample"===o.percentageMode)&&e(a,{children:[t(v,{size:b.XXXS,children:u}),e(Jo,{children:[t(B,{size:we.S,options:p,selected:o.percentagePreset,setSelected:h}),"custom"===o.percentagePreset&&t(w,{name:"sampling-input-custom-percentage",label:He,placeholder:"5%",type:T.Number,value:o.customPercentage,onChange:g,width:160})]})]})]})},nl=p.div`
|
|
72
|
-
display: flex;
|
|
73
|
-
flex-wrap: wrap;
|
|
74
|
-
gap: 8px;
|
|
75
|
-
`,ol=p.div`
|
|
76
|
-
display: flex;
|
|
77
|
-
align-items: center;
|
|
78
|
-
gap: 8px;
|
|
79
|
-
padding: 8px 12px;
|
|
80
|
-
border-radius: 8px;
|
|
81
|
-
cursor: pointer;
|
|
82
|
-
background: ${({theme:e,$selected:t})=>t?e.v2.colors.silver[700]:e.v2.colors.silver[900]};
|
|
83
|
-
border: 1px solid ${({theme:e,$selected:t})=>t?e.v2.colors.silver[500]:e.v2.colors.silver[800]};
|
|
84
|
-
|
|
85
|
-
&:hover {
|
|
86
|
-
background: ${({theme:e})=>e.v2.colors.silver[700]};
|
|
87
|
-
}
|
|
88
|
-
`,ll=p.div`
|
|
89
|
-
display: flex;
|
|
90
|
-
width: 32px;
|
|
91
|
-
height: 32px;
|
|
92
|
-
justify-content: center;
|
|
93
|
-
align-items: center;
|
|
94
|
-
flex-shrink: 0;
|
|
95
|
-
`,rl=p.div`
|
|
96
|
-
display: flex;
|
|
97
|
-
flex-wrap: wrap;
|
|
98
|
-
gap: 8px;
|
|
99
|
-
`,il=p.div`
|
|
100
|
-
display: flex;
|
|
101
|
-
align-items: center;
|
|
102
|
-
gap: 6px;
|
|
103
|
-
padding: 4px 10px;
|
|
104
|
-
border-radius: 8px;
|
|
105
|
-
background-color: ${({theme:e})=>e.v2.colors.silver[700]};
|
|
106
|
-
border: 1px solid ${({theme:e})=>e.v2.colors.silver[500]};
|
|
107
|
-
`,sl=p.div`
|
|
108
|
-
display: flex;
|
|
109
|
-
align-items: center;
|
|
110
|
-
cursor: pointer;
|
|
111
|
-
opacity: 0.6;
|
|
112
|
-
&:hover {
|
|
113
|
-
opacity: 1;
|
|
114
|
-
}
|
|
115
|
-
`,cl={[Qe.JavaScript]:"Node.js",[Qe.DotNet]:".NET",[Qe.Php]:"PHP"},dl=[Qe.Python,Qe.Java,Qe.JavaScript,Qe.DotNet,Qe.Php,Qe.Ruby,Qe.Go].map(e=>({id:e,label:cl[e]??e.charAt(0).toUpperCase()+e.slice(1),Icon:de(e)})),ul=[{value:"all",label:"Entire Cluster"},{value:"source",label:"Specific source"},{value:"namespace",label:"Specific Namespace"},{value:"language",label:"Specific programming language"}];function pl(e){if("source"===e.scopeType){return[e.workloadNamespace,e.workloadKind,e.workloadName].filter(Boolean).join(" / ")}if("namespace"===e.scopeType)return`namespace: ${e.workloadNamespace}`;if("language"===e.scopeType){return`language: ${cl[e.workloadLanguage]??e.workloadLanguage}`}return"Entire Cluster"}const ml=({formState:a,onChange:n,sourceOptions:o=[],namespaceOptions:i=[]})=>{const s=m(),[d,u]=l("all"),p=a.sourceScopes.length>0,h=c(()=>ul.map(e=>({...e,disabled:"all"===e.value&&p})),[p]),g=r(e=>{u(e)},[]),y=r(e=>{if(!e)return;const t=function(e){const t=e.split("/");return 3!==t.length?null:{namespace:t[0],kind:t[1],name:t[2]}}(e.id);if(!t)return;const o={scopeType:"source",workloadName:t.name,workloadKind:t.kind,workloadNamespace:t.namespace,workloadLanguage:""};n({sourceScopes:[...a.sourceScopes,o]})},[a.sourceScopes,n]),S=r(e=>{if(!e)return;const t={scopeType:"namespace",workloadName:"",workloadKind:"",workloadNamespace:e.id,workloadLanguage:""};n({sourceScopes:[...a.sourceScopes,t]})},[a.sourceScopes,n]),C=r(e=>{const t={scopeType:"language",workloadName:"",workloadKind:"",workloadNamespace:"",workloadLanguage:e};n({sourceScopes:[...a.sourceScopes,t]})},[a.sourceScopes,n]),k=r(e=>{const t=a.sourceScopes.filter((t,a)=>a!==e);n({sourceScopes:t})},[a.sourceScopes,n]),w=c(()=>{const e=new Set(a.sourceScopes.filter(e=>"source"===e.scopeType).map(e=>{return t=e.workloadNamespace,a=e.workloadKind,n=e.workloadName,`${t}/${a}/${n}`;var t,a,n}));return o.filter(t=>!e.has(t.id))},[o,a.sourceScopes]),T=c(()=>{const e=new Set(a.sourceScopes.filter(e=>"namespace"===e.scopeType).map(e=>e.workloadNamespace));return i.filter(t=>!e.has(t.id))},[i,a.sourceScopes]),x=c(()=>{const e=new Set(a.sourceScopes.filter(e=>"language"===e.scopeType).map(e=>e.workloadLanguage));return dl.filter(t=>!e.has(t.id))},[a.sourceScopes]),D=!p&&"all"===d;return e(ye,{richTitle:{title:Ke,subTitle:We},children:[p&&t(rl,{children:a.sourceScopes.map((a,n)=>e(il,{children:[t(v,{size:b.XXXS,color:s.v2.colors.white[500],nowrap:!0,children:pl(a)}),t(sl,{"data-id":`sampling-scope-remove-${n}`,onClick:()=>k(n),children:t(cn,{size:12,fill:s.v2.colors.grey[400]})})]},n))}),t(B,{size:we.S,options:h,selected:d,setSelected:g}),D&&t(J,{status:Q.Default,message:Ge,fullWidth:!0}),"source"===d&&t(qe,{"data-id":"sampling-autocomplete-source",options:w,value:"",onSelect:y,placeholder:Ye}),"namespace"===d&&t(qe,{"data-id":"sampling-autocomplete-namespace",options:T,value:"",onSelect:S,placeholder:"Search namespace"}),"language"===d&&t(nl,{children:x.map(({id:a,label:n,Icon:o})=>e(ol,{$selected:!1,onClick:()=>C(a),children:[t(f,{name:`sampling-scope-lang-${a}`,size:Je.S,value:!1,onChange:()=>C(a)}),t(ll,{children:t(o,{size:20})}),t(v,{size:b.XS,nowrap:!0,children:n})]},a))})]})};function hl(e){return{name:"",notes:"",disabled:!1,ruleType:"Relevance",sourceScopes:[],operationType:"all",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:"",durationPreset:"500",customDurationMs:"",keepErrors:!1,percentageMode:"costReduction"===e?"sample":"all",percentagePreset:"noisy"===e?"10":"50",customPercentage:""}}const gl=s({category:"noisy",formData:hl("noisy"),handleChange:()=>{},resetForm:()=>{},duplicateWarning:null,setDuplicateWarning:()=>{},sourceOptions:[],namespaceOptions:[]}),fl=({category:e,sourceOptions:a=[],namespaceOptions:o=[],children:i})=>{const{formData:s,handleFormChange:c,resetFormData:d}=L(hl(e)),[u,p]=l(null);n(()=>{d(hl(e)),p(null)},[e]);const m=r(e=>{p(null),c(void 0,void 0,{...s,...e})},[s,c]),h=r(()=>{d(hl(e)),p(null)},[e,d]);return t(gl.Provider,{value:{category:e,formData:s,handleChange:m,resetForm:h,duplicateWarning:u,setDuplicateWarning:p,sourceOptions:a,namespaceOptions:o},children:i})},vl=()=>i(gl),bl=p.div`
|
|
116
|
-
display: flex;
|
|
117
|
-
gap: 12px;
|
|
118
|
-
`,yl=p.div`
|
|
119
|
-
display: flex;
|
|
120
|
-
align-items: flex-end;
|
|
121
|
-
gap: 16px;
|
|
122
|
-
`,Sl=[{value:"5000",label:"5s"},{value:"1000",label:"1s"},{value:"500",label:"500ms"},{value:"100",label:"100ms"},{value:"50",label:"50ms"},{value:"custom",label:"Custom"}],Cl=()=>{},kl=({ruleType:a,formState:n,onChange:o})=>{const l=r(e=>o({durationPreset:e}),[o]),i=r(e=>o({customDurationMs:e.target.value}),[o]);return"Relevance"===a?null:e(bl,{children:["Duration"===a&&t("div",{style:{flex:1},children:e(ye,{richTitle:{title:et,subTitle:Ze},children:[t(v,{size:b.XXXS,children:tt}),e(yl,{children:[t(B,{size:we.S,options:Sl,selected:n.durationPreset,setSelected:l}),"custom"===n.durationPreset&&t(w,{name:"sampling-input-custom-duration",label:at,placeholder:"200ms",type:T.Number,value:n.customDurationMs,onChange:i,width:160})]})]})}),"Error"===a&&t("div",{style:{flex:1},children:t(ye,{richTitle:{title:ot,subTitle:nt},children:t(A,{name:"sampling-toggle-keep-errors",value:!0,onChange:Cl,size:rt.S,label:lt,labelAlign:I.Right})})})]})},wl=p.div`
|
|
123
|
-
display: flex;
|
|
124
|
-
align-items: center;
|
|
125
31
|
gap: 24px;
|
|
126
|
-
|
|
127
|
-
border-radius: 12px;
|
|
128
|
-
background-color: ${({theme:e})=>e.v2.colors.silver[800]};
|
|
129
|
-
`,Tl=p.div`
|
|
130
|
-
flex: 1;
|
|
131
|
-
min-width: 0;
|
|
132
|
-
white-space: pre;
|
|
133
|
-
overflow-x: auto;
|
|
134
|
-
`,xl=({title:a,summary:n,onEdit:o,renderAction:l})=>{const r=c(()=>{const e=[];return a&&(e.push({text:a,variant:Ln.Default}),e.push({text:" - ",variant:Ln.Default})),e.push(...n),e},[a,n]);return e(wl,{children:[t(Tl,{children:t(zn,{parts:r})}),l&&l(),o&&t(P,{"data-id":"sampling-btn-edit-auto-rule",label:it,rightIcon:ln,variant:O.Text,size:$.S,onClick:o})]})};var Dl;!function(e){e.Noisy="noisy",e.HighlyRelevant="highly-relevant",e.CostReduction="cost-reduction"}(Dl||(Dl={}));const Nl=[{value:Dl.Noisy,label:"1. Noisy Operations",tooltip:"Rules that reduce noise from high-volume, low-value operations"},{value:Dl.HighlyRelevant,label:"2. Highly Relevant Operations",tooltip:"Rules that prioritize important traces for retention"},{value:Dl.CostReduction,label:"3. Cost Reduction",tooltip:"Rules that optimize costs by sampling less critical data"}],Al={[Dl.Noisy]:"This is the most efficient way to sample (with Head Sampling). Prefer to use it where possible.",[Dl.HighlyRelevant]:'Any trace from the "Noisy Operations" category is sampled prior to checking highly relevance.',[Dl.CostReduction]:"Cost reduction rules use Tail Sampling to drop traces that are unlikely to be useful for debugging or monitoring."},Il={[Dl.Noisy]:"Noisy Operations rules list",[Dl.HighlyRelevant]:"Highly Relevant Operations rules list",[Dl.CostReduction]:"Cost Reduction rules list"},El={[Dl.Noisy]:"noisy",[Dl.HighlyRelevant]:"highlyRelevant",[Dl.CostReduction]:"costReduction"};function Rl(e){if(e.workloadName){const t=e.workloadKind?.toLowerCase()||"deployment";return e.workloadNamespace?`${t} '${e.workloadName}' in namespace '${e.workloadNamespace}'`:`${t} '${e.workloadName}'`}return e.workloadNamespace?`namespace '${e.workloadNamespace}'`:e.workloadLanguage?`${e.workloadLanguage} services`:""}function Pl(e){if(!e?.length)return[{text:" for ",variant:Ln.Default},{text:"entire cluster",variant:Ln.Scope}];const t=e.map(Rl).filter(Boolean);if(!t.length)return[{text:" for ",variant:Ln.Default},{text:"entire cluster",variant:Ln.Scope}];const a=[{text:" for ",variant:Ln.Default}],n=t.slice(0,2),o=t.length-2;return n.forEach((e,t)=>{t>0&&a.push({text:", ",variant:Ln.Default}),a.push({text:e,variant:Ln.Scope})}),o>0&&a.push({text:` + ${o} more`,variant:Ln.Default}),a}function $l(e,t){if(!e)return[];const a=(n=e).startsWith("/")?n.slice(1):n;var n;const o=[{text:" starting at ",variant:Ln.Default}];return t?o.push({text:`${t} /${a}`,variant:Ln.Endpoint}):o.push({text:`endpoint /${a}`,variant:Ln.Endpoint}),o}function Ol(e){const t=[];if(null!=e.percentageAtMost?(t.push({text:`Drop ${100-e.percentageAtMost}%`,variant:Ln.Action}),t.push({text:" of traces",variant:Ln.Default})):t.push({text:"Drop all traces",variant:Ln.Action}),e.operation){const a=e.operation.httpServer?.route||e.operation.httpServer?.routePrefix,n=e.operation.httpServer?.method||e.operation.httpClient?.method;t.push(...$l(a,n));const o=e.operation.httpClient,l=o?.templatedPath||o?.templatedPathPrefix,r=o?.serverAddress;if((l||r)&&!a){const e=l&&r?`${r}/${l}`:l||r;t.push({text:" to ",variant:Ln.Default}),n?t.push({text:`${n} /${e}`,variant:Ln.Endpoint}):t.push({text:`/${e}`,variant:Ln.Endpoint})}}else t.push({text:" on ",variant:Ln.Default}),t.push({text:"any operation",variant:Ln.Endpoint});return t.push(...Pl(e.sourceScopes)),t}function Ml(e){const t=[];if(null!=e.percentageAtLeast?(t.push({text:`Keep at least ${e.percentageAtLeast}%`,variant:Ln.Action}),t.push({text:" of traces",variant:Ln.Default})):t.push({text:"Keep all traces",variant:Ln.Action}),e.operation){const a=e.operation.httpServer?.route||e.operation.httpServer?.routePrefix,n=e.operation.httpServer?.method;t.push(...$l(a,n))}else t.push({text:" on ",variant:Ln.Default}),t.push({text:"any operation",variant:Ln.Endpoint});return t.push(...Pl(e.sourceScopes)),!e.error&&null!=e.durationAtLeastMs&&e.durationAtLeastMs>0&&(t.push({text:" with duration > ",variant:Ln.Default}),t.push({text:`${e.durationAtLeastMs}ms`,variant:Ln.Duration})),t}function Fl(e){const t=[];if(t.push({text:`Drop ${e.percentageAtMost}%`,variant:Ln.Action}),t.push({text:" of traces",variant:Ln.Default}),e.operation){const a=e.operation.httpServer?.route||e.operation.httpServer?.routePrefix,n=e.operation.httpServer?.method;t.push(...$l(a,n));const o=e.operation.kafkaConsumer?.kafkaTopic;o&&!a&&(t.push({text:" from ",variant:Ln.Default}),t.push({text:`topic '${o}'`,variant:Ln.Endpoint}))}else t.push({text:" on ",variant:Ln.Default}),t.push({text:"any operation",variant:Ln.Endpoint});return t.push(...Pl(e.sourceScopes)),t}function Ll(e){return e.error?"Error":null!=e.durationAtLeastMs?"Duration":"Relevance"}function zl(e,t){switch(e){case"noisy":return Ol(t);case"highlyRelevant":return Ml(t);case"costReduction":return Fl(t)}}function Vl(e,t,a,n){for(const o of e)if(o.id===t)switch(n){case"noisy":{const e=o.noisyOperations.find(e=>e.ruleId===a);if(e)return{category:"noisy",samplingId:o.id,rule:e};break}case"highlyRelevant":{const e=o.highlyRelevantOperations.find(e=>e.ruleId===a);if(e)return{category:"highlyRelevant",samplingId:o.id,rule:e};break}case"costReduction":{const e=o.costReductionRules.find(e=>e.ruleId===a);if(e)return{category:"costReduction",samplingId:o.id,rule:e};break}}return null}function Xl(e){return null==e||Array.isArray(e)&&0===e.length?null:e}function Bl(e,t){return JSON.stringify({sourceScopes:Xl(e),operation:Xl(t)})}function _l(e,t,a,n){return JSON.stringify({sourceScopes:Xl(e),error:t??!1,durationAtLeastMs:Xl(a),operation:Xl(n)})}function Ul(e,t){return JSON.stringify({sourceScopes:Xl(e),operation:Xl(t)})}function jl(e,t,a,n){switch(t){case"noisy":{const t=Bl(a.sourceScopes,a.operation);for(const a of e)for(const e of a.noisyOperations)if((!n||e.ruleId!==n)&&Bl(e.sourceScopes,e.operation)===t)return e.ruleId;return null}case"highlyRelevant":{const t=_l(a.sourceScopes,a.error,a.durationAtLeastMs,a.operation);for(const a of e)for(const e of a.highlyRelevantOperations)if((!n||e.ruleId!==n)&&_l(e.sourceScopes,e.error,e.durationAtLeastMs,e.operation)===t)return e.ruleId;return null}case"costReduction":{const t=Ul(a.sourceScopes,a.operation);for(const a of e)for(const e of a.costReductionRules)if((!n||e.ruleId!==n)&&Ul(e.sourceScopes,e.operation)===t)return e.ruleId;return null}}}function Hl(e){if(!e||!e.enabled)return[{text:"Auto rule is ",variant:Ln.Default},{text:"disabled",variant:Ln.Action}];return[{text:`Keep ${e.keepPercentage??0}%`,variant:Ln.Action},{text:" of ",variant:Ln.Default},{text:"traces for kubelet health probes in the entire cluster",variant:Ln.Scope}]}function Wl(e){return!(!0!==e.error||e.sourceScopes&&0!==e.sourceScopes.length||e.operation||null!=e.percentageAtLeast&&100!==e.percentageAtLeast)}function Kl(e){return!e||e.disabled?[{text:"Auto rule is ",variant:Ln.Default},{text:"disabled",variant:Ln.Action}]:[{text:"Keep 100%",variant:Ln.Action},{text:" of ",variant:Ln.Default},{text:"error traces across the entire cluster",variant:Ln.Scope}]}function Gl(e){return!(e.sourceScopes&&0!==e.sourceScopes.length||e.operation)}function ql(e){return!e||e.disabled?[{text:" is ",variant:Ln.Default},{text:"disabled",variant:Ln.Action}]:[{text:`Drop ${e.percentageAtMost}%`,variant:Ln.Action},{text:" of ",variant:Ln.Default},{text:"traces across the entire cluster",variant:Ln.Scope}]}function Yl(e){if(!e.sourceScopes.length)return;const t=[];for(const a of e.sourceScopes)if("source"===a.scopeType&&a.workloadName){const e={workloadName:a.workloadName};a.workloadKind&&(e.workloadKind=a.workloadKind),a.workloadNamespace&&(e.workloadNamespace=a.workloadNamespace),t.push(e)}else"namespace"===a.scopeType&&a.workloadNamespace?t.push({workloadNamespace:a.workloadNamespace}):"language"===a.scopeType&&a.workloadLanguage&&t.push({workloadLanguage:a.workloadLanguage});return t.length?t:void 0}function Jl(e){if("all"===e.percentageMode)return null;if("custom"===e.percentagePreset){const t=parseFloat(e.customPercentage);return isNaN(t)?null:t}return parseFloat(e.percentagePreset)}function Ql(e){if("custom"===e.durationPreset){const t=parseFloat(e.customDurationMs);return isNaN(t)?null:t}return parseInt(e.durationPreset,10)}function Zl(e){return{httpServer:{[e.routeType]:e.route||null,method:e.method||null}}}function er(e){return"all"===e.operationType?null:"httpServer"===e.operationType?Zl(e):"httpClient"===e.operationType?{httpClient:{serverAddress:e.serverAddress||null,["route"===e.routeType?"templatedPath":"templatedPathPrefix"]:e.route||null,method:e.method||null}}:null}function tr(e){return"all"===e.operationType?null:"httpServer"===e.operationType?Zl(e):"kafkaConsumer"===e.operationType?{kafkaConsumer:{kafkaTopic:e.kafkaTopic||null}}:"kafkaProducer"===e.operationType?{kafkaProducer:{kafkaTopic:e.kafkaTopic||null}}:null}const ar=({category:e,formState:a,onChange:n})=>{const o=c(()=>{switch(e){case"noisy":return Ol({ruleId:"",name:(t=a).name||null,disabled:!1,notes:t.notes||null,sourceScopes:Yl(t)??null,percentageAtMost:Jl(t),operation:er(t)});case"highlyRelevant":return Ml(function(e){return{ruleId:"",name:e.name||null,disabled:!1,notes:e.notes||null,sourceScopes:Yl(e)??null,error:e.keepErrors,durationAtLeastMs:"Duration"===e.ruleType?Ql(e):null,percentageAtLeast:Jl(e),operation:tr(e)}}(a));case"costReduction":return Fl(function(e){return{ruleId:"",name:e.name||null,disabled:!1,notes:e.notes||null,sourceScopes:Yl(e)??null,percentageAtMost:Jl(e)??0,operation:tr(e)}}(a))}var t},[e,a]),l=1===o.length&&"default"===o[0].variant;return t(xl,{title:l?st:ct,summary:l?[]:o,renderAction:n?()=>t(A,{name:"sampling-toggle-rule-enabled",value:!a.disabled,onChange:e=>n({disabled:!e}),size:rt.S,label:"Rule Enabled",labelAlign:I.Right}):void 0})},nr=()=>{const{category:a,formData:n,handleChange:o,sourceOptions:l,namespaceOptions:r}=vl();return e(h,{$gap:12,children:[t(ar,{category:a,formState:n,onChange:o}),t(Xo,{category:a,formState:n,onChange:o}),t(ml,{formState:n,onChange:o,sourceOptions:l,namespaceOptions:r}),t(Yo,{category:a,formState:n,onChange:o}),"highlyRelevant"===a&&t(kl,{ruleType:n.ruleType,formState:n,onChange:o}),t(al,{category:a,formState:n,onChange:o})]})},or=p.div`
|
|
135
|
-
display: flex;
|
|
136
|
-
gap: 32px;
|
|
137
|
-
`,lr=p.div`
|
|
138
|
-
display: flex;
|
|
139
|
-
flex-direction: column;
|
|
140
|
-
gap: 4px;
|
|
141
|
-
`;p.div`
|
|
142
|
-
display: flex;
|
|
143
|
-
flex-direction: column;
|
|
144
|
-
gap: 8px;
|
|
145
|
-
border-radius: 8px;
|
|
146
|
-
`,p.div`
|
|
147
|
-
flex: 1;
|
|
148
|
-
min-width: 0;
|
|
149
|
-
padding: 8px 16px;
|
|
150
|
-
border-radius: 8px;
|
|
151
|
-
background-color: ${({theme:e})=>e.v2.colors.silver[800]};
|
|
152
|
-
white-space: pre;
|
|
153
|
-
overflow-x: auto;
|
|
154
|
-
`;const rr=p.div`
|
|
155
|
-
display: flex;
|
|
156
|
-
align-items: flex-end;
|
|
157
|
-
gap: 16px;
|
|
158
|
-
`;function ir(e){return"highlyRelevant"===e.category?e.rule.error?"Error":null!=e.rule.durationAtLeastMs?"Duration":"Relevance":pt[e.category]}const sr=({data:a})=>{const n=m(),o=c(()=>[{id:"name",title:Ce,value:a.rule.name||dt},{id:"type",title:ke,value:ir(a)}],[a]),l=a.rule.notes||ut;return e(ye,{children:[t(or,{children:o.map(({id:a,title:o,value:l})=>e(lr,{children:[t(v,{size:b.XXXS,color:n.v2.colors.silver[200],nowrap:!0,children:o}),t(v,{size:b.XS,nowrap:!0,children:l})]},a))}),e(lr,{children:[t(v,{size:b.XXXS,color:n.v2.colors.silver[200],children:De}),t(v,{size:b.XS,children:l})]})]})};const cr=({data:a})=>{const n=m(),o=c(()=>function(e){switch(e.category){case"highlyRelevant":return null!=e.rule.percentageAtLeast?{title:Be,method:ht,description:Ue,value:`${e.rule.percentageAtLeast}%`}:{title:Be,method:ft,description:null,value:null};case"noisy":return null!=e.rule.percentageAtMost?{title:_e,method:ht,description:je,value:`${e.rule.percentageAtMost}%`}:{title:_e,method:gt,description:null,value:null};case"costReduction":return{title:_e,method:ht,description:je,value:`${e.rule.percentageAtMost}%`}}}(a),[a]),l=[{id:"method",title:mt,value:o.method},...null!=o.description?[{id:"value",title:o.description,value:o.value}]:[]];return t(ye,{richTitle:{title:o.title},children:t(or,{children:l.map(({id:a,title:o,value:l})=>e(lr,{children:[t(v,{size:b.XXXS,color:n.v2.colors.silver[200],nowrap:!0,children:o}),t(v,{size:b.XS,nowrap:!0,children:l})]},a))})})},dr=p.div`
|
|
159
|
-
display: flex;
|
|
160
|
-
flex-direction: column;
|
|
161
|
-
gap: 4px;
|
|
162
|
-
`,ur=p.div`
|
|
163
|
-
display: flex;
|
|
164
|
-
align-items: center;
|
|
165
|
-
gap: 8px;
|
|
166
|
-
padding: 8px;
|
|
167
|
-
border-radius: 8px;
|
|
168
|
-
background-color: ${({theme:e})=>e.v2.colors.silver[900]};
|
|
169
|
-
`,pr=p.div`
|
|
170
|
-
display: flex;
|
|
171
|
-
width: 24px;
|
|
172
|
-
height: 24px;
|
|
173
|
-
justify-content: center;
|
|
174
|
-
align-items: center;
|
|
175
|
-
flex-shrink: 0;
|
|
176
|
-
`,mr={[Qe.JavaScript]:"Node.js",[Qe.DotNet]:".NET",[Qe.Php]:"PHP",[Qe.Java]:"Java",[Qe.Go]:"Go",[Qe.Python]:"Python",[Qe.Ruby]:"Ruby",[Qe.Rust]:"Rust"};function hr(e){const t=mr[e];return t||e.charAt(0).toUpperCase()+e.slice(1)}const gr=({scopes:a})=>{const n=m();return t(ye,{richTitle:{title:Ke},children:a.length?t(dr,{children:a.map((a,o)=>function(a,n,o){if(a.workloadLanguage){const l=de(a.workloadLanguage);return e(ur,{children:[l&&t(pr,{children:t(l,{size:18})}),t(v,{size:b.XS,color:o.v2.colors.white[500],children:hr(a.workloadLanguage)})]},n)}const l=[a.workloadNamespace,a.workloadKind,a.workloadName].filter(Boolean),r=l.length?l.join(" / "):"Unknown scope";return t(ur,{children:t(v,{size:b.XS,color:o.v2.colors.white[500],children:r})},n)}(a,o,n))}):t(J,{status:Q.Default,message:Ge,fullWidth:!0})})},fr=["5000","1000","500","100","50"],vr=["50","25","10","1","0.5","0.1"];function br(e){if(null==e)return{percentageMode:"all",percentagePreset:"50",customPercentage:""};const t=vr.find(t=>Number(t)===e);return t?{percentageMode:"sample",percentagePreset:t,customPercentage:""}:{percentageMode:"sample",percentagePreset:"custom",customPercentage:String(e)}}function yr(e){if(!e)return{operationType:"all",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:""};const t=e;if(t.httpServer){return{operationType:"httpServer",routeType:t.httpServer.routePrefix?"routePrefix":"route",route:t.httpServer.route||t.httpServer.routePrefix||"",serverAddress:"",method:t.httpServer.method||"",kafkaTopic:""}}return t.kafkaConsumer?{operationType:"kafkaConsumer",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:t.kafkaConsumer.kafkaTopic||""}:t.kafkaProducer?{operationType:"kafkaProducer",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:t.kafkaProducer.kafkaTopic||""}:{operationType:"all",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:""}}function Sr(e){const t=hl(),a=(n=e.rule.sourceScopes,n?.length?n.map(e=>e.workloadLanguage?{scopeType:"language",workloadName:"",workloadKind:"",workloadNamespace:"",workloadLanguage:e.workloadLanguage}:e.workloadName?{scopeType:"source",workloadName:e.workloadName,workloadKind:e.workloadKind??"",workloadNamespace:e.workloadNamespace??"",workloadLanguage:""}:e.workloadNamespace?{scopeType:"namespace",workloadName:"",workloadKind:"",workloadNamespace:e.workloadNamespace,workloadLanguage:""}:{scopeType:"all",workloadName:"",workloadKind:"",workloadNamespace:"",workloadLanguage:""}).filter(e=>"all"!==e.scopeType):[]);var n;const o=function(e){return"highlyRelevant"!==e.category?"Relevance":e.rule.error?"Error":null!=e.rule.durationAtLeastMs?"Duration":"Relevance"}(e);let l,r,i={durationPreset:"500",customDurationMs:""},s=!1;switch(e.category){case"noisy":l=function(e){const t=e.rule.operation;if(!t)return{operationType:"all",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:""};if(t.httpServer)return{operationType:"httpServer",routeType:t.httpServer.routePrefix?"routePrefix":"route",route:t.httpServer.route||t.httpServer.routePrefix||"",serverAddress:"",method:t.httpServer.method||"",kafkaTopic:""};if(t.httpClient)return{operationType:"httpClient",routeType:t.httpClient.templatedPathPrefix?"routePrefix":"route",route:t.httpClient.templatedPath||t.httpClient.templatedPathPrefix||"",serverAddress:t.httpClient.serverAddress||"",method:t.httpClient.method||"",kafkaTopic:""};return{operationType:"all",routeType:"route",route:"",serverAddress:"",method:"",kafkaTopic:""}}(e),r=br(e.rule.percentageAtMost);break;case"highlyRelevant":l=yr(e.rule.operation),r=br(e.rule.percentageAtLeast),i=function(e){if(null==e)return{durationPreset:"500",customDurationMs:""};const t=fr.find(t=>Number(t)===e);return t?{durationPreset:t,customDurationMs:""}:{durationPreset:"custom",customDurationMs:String(e)}}(e.rule.durationAtLeastMs),s=e.rule.error;break;case"costReduction":l=yr(e.rule.operation),r=br(e.rule.percentageAtMost)}return{...t,name:e.rule.name||"",notes:e.rule.notes||"",disabled:e.rule.disabled,ruleType:o,sourceScopes:a,...l,...i,keepErrors:s,...r}}const Cr=s({data:null,isEditing:!1,formData:void 0,handleChange:()=>{},handleEdit:()=>{},handleCancelEdit:()=>{},duplicateWarning:null,setDuplicateWarning:()=>{},sourceOptions:[],namespaceOptions:[]}),kr=({data:e,defaultEditMode:a,sourceOptions:o=[],namespaceOptions:i=[],children:s})=>{const[c,u]=l(!1),{formData:p,handleFormChange:m,resetFormData:h}=L(void 0),g=d(null),[f,v]=l(null);n(()=>{e!==g.current&&(g.current=e,e&&a?(h(Sr(e)),v(null),u(!0)):(u(!1),v(null)))},[e,a]);const b=r(e=>{v(null),m(void 0,void 0,{...p,...e})},[p,m]),y=r(()=>{e&&(h(Sr(e)),v(null),u(!0))},[e,h]),S=r(()=>{u(!1),v(null)},[]);return t(Cr.Provider,{value:{data:e,isEditing:c,formData:p,handleChange:b,handleEdit:y,handleCancelEdit:S,duplicateWarning:f,setDuplicateWarning:v,sourceOptions:o,namespaceOptions:i},children:s})},wr=()=>i(Cr),Tr=()=>{},xr=p.div`
|
|
177
|
-
display: flex;
|
|
178
|
-
gap: 12px;
|
|
179
|
-
`,Dr=({rule:a})=>{const n=m(),o=null!=a.durationAtLeastMs,l=a.error;return o||l?e(xr,{children:[o&&t("div",{style:{flex:1},children:t(ye,{richTitle:{title:et},children:e("div",{children:[t(v,{size:b.XXXS,color:n.v2.colors.silver[200],children:tt}),t(v,{size:b.XS,children:`${a.durationAtLeastMs}ms`})]})})}),l&&t("div",{style:{flex:1},children:t(ye,{richTitle:{title:ot},children:t(A,{name:"sampling-view-toggle-keep-errors",onChange:Tr,value:!0,size:rt.S,label:lt,labelAlign:I.Right})})})]}):null},Nr=({summary:e})=>t(xl,{title:ct,summary:e}),Ar="Kafka topic",Ir="Any method";const Er=({data:a})=>{const n=m(),o=c(()=>function(e){if("noisy"===e.category){const t=e.rule.operation;if(t?.httpServer)return[{id:"type",title:bt,value:vt},{id:"route",title:Oe,value:t.httpServer.route||t.httpServer.routePrefix||ut},{id:"method",title:mt,value:t.httpServer.method||Ir}];if(t?.httpClient){const e=[{id:"type",title:bt,value:yt}];return t.httpClient.serverAddress&&e.push({id:"serverAddress",title:"Server address",value:t.httpClient.serverAddress}),e.push({id:"route",title:Oe,value:t.httpClient.templatedPath||t.httpClient.templatedPathPrefix||ut}),e.push({id:"method",title:mt,value:t.httpClient.method||Ir}),e}return[{id:"type",title:bt,value:St}]}const t=e.rule.operation;return t?.httpServer?[{id:"type",title:bt,value:vt},{id:"route",title:Oe,value:t.httpServer.route||t.httpServer.routePrefix||ut},{id:"method",title:mt,value:t.httpServer.method||Ir}]:t?.kafkaConsumer?[{id:"type",title:bt,value:Ct},{id:"topic",title:Ar,value:t.kafkaConsumer.kafkaTopic||ut}]:t?.kafkaProducer?[{id:"type",title:bt,value:kt},{id:"topic",title:Ar,value:t.kafkaProducer.kafkaTopic||ut}]:[{id:"type",title:bt,value:St}]}(a),[a]);return t(ye,{richTitle:{title:Ae},children:t(or,{children:o.map(({id:a,title:o,value:l})=>e(lr,{children:[t(v,{size:b.XXXS,color:n.v2.colors.silver[200],nowrap:!0,children:o}),t(v,{size:b.XS,nowrap:!0,children:l})]},a))})})},Rr=()=>{const{data:a,isEditing:n,formData:o,handleChange:l,sourceOptions:r,namespaceOptions:i}=wr();return a?e(h,n?{$gap:12,children:[t(ar,{category:a.category,formState:o,onChange:l}),t(Xo,{category:a.category,formState:o,onChange:l}),t(ml,{formState:o,onChange:l,sourceOptions:r,namespaceOptions:i}),t(Yo,{category:a.category,formState:o,onChange:l}),"highlyRelevant"===a.category&&t(kl,{ruleType:o.ruleType,formState:o,onChange:l}),t(al,{category:a.category,formState:o,onChange:l})]}:{$gap:12,children:[t(Nr,{summary:a.summary}),t(sr,{data:a}),t(gr,{scopes:a.rule.sourceScopes??[]}),t(Er,{data:a}),"highlyRelevant"===a.category&&t(Dr,{rule:a.rule}),t(cr,{data:a})]}):null},Pr=s({localEnabled:!1,setLocalEnabled:()=>{},percentagePreset:"50",setPercentagePreset:()=>{},customPercentage:"",setCustomPercentage:()=>{},resolvedPercentage:0,summary:[]});function $r(e){const t=String(e);return"50"===t||"25"===t||"10"===t||"1"===t?t:"custom"}const Or=({enabled:e,keepPercentage:a,children:o})=>{const[r,i]=l(e),[s,d]=l(()=>$r(a)),[u,p]=l(()=>"custom"===$r(a)?String(a):"");n(()=>{i(e);const t=$r(a);d(t),p("custom"===t?String(a):"")},[e,a]);const m=c(()=>"custom"===s?Number(u)||0:Number(s),[s,u]),h=c(()=>Hl({enabled:r,keepPercentage:m}),[r,m]);return t(Pr.Provider,{value:{localEnabled:r,setLocalEnabled:i,percentagePreset:s,setPercentagePreset:d,customPercentage:u,setCustomPercentage:p,resolvedPercentage:m,summary:h},children:o})},Mr=()=>i(Pr),Fr=[{value:"50",label:"50%"},{value:"25",label:"25%"},{value:"10",label:"10%"},{value:"1",label:"1%"},{value:"custom",label:"Custom"}],Lr=()=>{const{localEnabled:a,setLocalEnabled:n,percentagePreset:o,setPercentagePreset:l,customPercentage:i,setCustomPercentage:s,summary:c}=Mr(),d=r(e=>l(e),[l]),u=r(e=>s(e.target.value),[s]);return e(h,{$gap:12,children:[t(xl,{title:a?void 0:wt,summary:c,renderAction:()=>t(A,{name:"sampling-auto-toggle-enabled",value:a,onChange:n,size:rt.S,label:Tt,labelAlign:I.Right})}),e(ye,{richTitle:{title:xt,subTitle:Ve},children:[t(v,{size:b.XXXS,children:Ue}),e(rr,{children:[t(B,{size:we.S,options:Fr,selected:o,setSelected:d}),"custom"===o&&t(w,{name:"sampling-auto-input-custom-percentage",label:He,placeholder:"5%",type:T.Number,value:i,onChange:u,width:160})]})]})]})},zr=s({localEnabled:!1,setLocalEnabled:()=>{},summary:[]}),Vr=({enabled:e,children:a})=>{const[o,r]=l(e);n(()=>{r(e)},[e]);const i=c(()=>Kl(o?{disabled:!1}:null),[o]);return t(zr.Provider,{value:{localEnabled:o,setLocalEnabled:r,summary:i},children:a})},Xr=()=>i(zr),Br=()=>{const{localEnabled:e,setLocalEnabled:a,summary:n}=Xr();return t(xl,{title:e?void 0:Dt,summary:n,renderAction:()=>t(A,{name:"sampling-hr-auto-toggle-enabled",value:e,onChange:a,size:rt.S,label:Tt,labelAlign:I.Right})})},_r=s({localEnabled:!1,setLocalEnabled:()=>{},percentagePreset:"50",setPercentagePreset:()=>{},customPercentage:"",setCustomPercentage:()=>{},resolvedPercentage:0,summary:[]});function Ur(e){const t=String(e);return"50"===t||"25"===t||"10"===t||"1"===t?t:"custom"}const jr=({enabled:e,dropPercentage:a,children:o})=>{const[r,i]=l(e),[s,d]=l(()=>Ur(a)),[u,p]=l(()=>"custom"===Ur(a)?String(a):"");n(()=>{i(e);const t=Ur(a);d(t),p("custom"===t?String(a):"")},[e,a]);const m=c(()=>"custom"===s?Number(u)||0:Number(s),[s,u]),h=c(()=>ql(r?{disabled:!1,percentageAtMost:m}:null),[r,m]);return t(_r.Provider,{value:{localEnabled:r,setLocalEnabled:i,percentagePreset:s,setPercentagePreset:d,customPercentage:u,setCustomPercentage:p,resolvedPercentage:m,summary:h},children:o})},Hr=()=>i(_r),Wr=[{value:"50",label:"50%"},{value:"25",label:"25%"},{value:"10",label:"10%"},{value:"1",label:"1%"},{value:"custom",label:"Custom"}],Kr=()=>{const{localEnabled:a,setLocalEnabled:n,percentagePreset:o,setPercentagePreset:l,customPercentage:i,setCustomPercentage:s,summary:c}=Hr(),d=r(e=>l(e),[l]),u=r(e=>s(e.target.value),[s]);return e(h,{$gap:12,children:[t(xl,{title:a?void 0:Nt,summary:c,renderAction:()=>t(A,{name:"sampling-cr-auto-toggle-enabled",value:a,onChange:n,size:rt.S,label:Tt,labelAlign:I.Right})}),e(ye,{richTitle:{title:At,subTitle:Xe},children:[t(v,{size:b.XXXS,children:It}),e(rr,{children:[t(B,{size:we.S,options:Wr,selected:o,setSelected:d}),"custom"===o&&t(w,{name:"sampling-cr-auto-input-custom-percentage",label:He,placeholder:"5%",type:T.Number,value:i,onChange:u,width:160})]})]})]})},Gr=p.div`
|
|
32
|
+
`,yo=()=>{const e=ye();switch(e.formType){case Ce.Create:return t(Co,{category:e.category,formData:e.formData,onChange:e.handleChange,sourceOptions:e.sourceOptions,namespaceOptions:e.namespaceOptions});case Ce.View:return e.data?e.isEditing?t(Co,{category:e.data.category,formData:e.formData,onChange:e.handleChange,sourceOptions:e.sourceOptions,namespaceOptions:e.namespaceOptions}):t(So,{data:e.data}):null;case Ce.EditAutoNoisy:return t(ko,{enabled:e.localEnabled,summary:e.summary,inactiveTitle:Ee,sectionTitle:Ae,sectionSubTitle:Ne,presetLabel:Te,customInputName:"sampling-auto-input-custom-percentage",percentagePreset:e.percentagePreset,setPercentagePreset:e.setPercentagePreset,customPercentage:e.customPercentage,setCustomPercentage:e.setCustomPercentage});case Ce.EditAutoCostReduction:return t(ko,{enabled:e.localEnabled,summary:e.summary,inactiveTitle:De,sectionTitle:Ie,sectionSubTitle:we,presetLabel:ke,customInputName:"sampling-cr-auto-input-custom-percentage",percentagePreset:e.percentagePreset,setPercentagePreset:e.setPercentagePreset,customPercentage:e.customPercentage,setCustomPercentage:e.setCustomPercentage});case Ce.EditAutoHighlyRelevant:return t(vo,{children:t(mn,{title:e.localEnabled?void 0:Se,summary:e.summary})})}},Co=({category:a,formData:n,onChange:o,sourceOptions:l,namespaceOptions:i})=>e(vo,{children:[t(bn,{category:a,formState:n}),t(fn,{category:a,formState:n,onChange:o}),t(vn,{formState:n,onChange:o,sourceOptions:l,namespaceOptions:i}),t(yn,{category:a,formState:n,onChange:o}),t(Cn,{category:a,formState:n,onChange:o}),"highlyRelevant"===a&&t(Sn,{ruleType:n.ruleType,formState:n,onChange:o})]}),So=({data:a})=>e(vo,{children:[t(bn,{readOnly:!0,summary:a.summary}),t(fn,{readOnly:!0,data:a}),t(vn,{readOnly:!0,scopes:a.rule.sourceScopes??[]}),t(yn,{readOnly:!0,data:a}),t(Cn,{readOnly:!0,data:a}),"highlyRelevant"===a.category&&t(Sn,{readOnly:!0,rule:a.rule})]}),ko=({enabled:a,summary:n,inactiveTitle:o,sectionTitle:l,sectionSubTitle:s,presetLabel:r,customInputName:c,percentagePreset:d,setPercentagePreset:u,customPercentage:p,setCustomPercentage:m})=>{const h=i(e=>u(e),[u]),g=i(e=>m(e.target.value),[m]);return e(vo,{children:[t(mn,{title:a?void 0:o,summary:n}),t(xe,{richTitle:{title:l,subTitle:s},children:t(hn,{description:r,options:gn,selected:d,onSelect:h,customName:c,customLabel:Re,customPlaceholder:"5%",customValue:p,onCustomChange:g})})]})},wo=p.div`
|
|
180
33
|
display: flex;
|
|
181
34
|
align-items: center;
|
|
182
35
|
gap: 8px;
|
|
183
36
|
padding: 8px;
|
|
184
|
-
`,
|
|
37
|
+
`,Io=({onClose:a,selectedConnectionIds:n,setSelectedConnectionIds:o,createAction:i,withOverlay:s})=>{const r=m(),[u,p]=l(""),h=d(null),{selectedOption:g,onSelectOption:b,genericForm:y,validateFormData:C,errorMessage:S}=Wn(),k=c(()=>(u?Oe.filter(e=>e?.label?.toLowerCase().includes(u.toLowerCase())):Oe).filter(e=>!!e),[u]),w=c(()=>(u?$e.filter(e=>e?.label?.toLowerCase().includes(u.toLowerCase())):$e).filter(e=>!!e),[u]),I=c(()=>{const a=(a,n)=>e(wo,{children:[t(f,{size:v.XS,color:r.v2.colors.silver[200],children:a}),t(re,{label:n.toString()})]},a),n=e=>{const a=g?.type===e.type;return t(xn,{dataId:e.type?`option-${e.type}`:void 0,title:e.label,description:e.description,withCarret:!0,isSelected:a,onClick:()=>{h.current?.clearErrors(),b(e)}},e.type)};return[a("Attributes",k.length),...k.map(n),a("Samplers",w.length),...w.map(n)]},[r,g?.type,k.length,w.length,b]),D=c(()=>g?[t(Gn,{},g.type)]:[t(Pe,{$height:"100%",children:t(B,{icon:La,title:"Action not selected",subTitle:"Please select an action to add"})},"no-data")],[g]);return t(kn,{ref:h,isOpen:!0,withOverlay:s,onClose:a,onSave:async()=>{const{errorMessage:e,preparedFormData:t}=C();return e?Promise.resolve({error:e}):await i(t)},disableSave:!g||!y?.isFormDirty,isFormDirty:y?.isFormDirty,hideDirtyNote:!0,errorMessage:S,progress:{title:Fe.CREATING_ACTION,subTitle:Fe.CREATING_ACTION_SUBTITLE},header:{icon:La,title:Fe.ADD_ACTION,subTitle:Fe.ADD_ACTION_DESCRIPTION},connectionIds:n&&o?{value:n,setValue:o}:void 0,search:{value:u,onChange:p},leftColumn:{width:"40%",list:I},rightColumn:{width:"60%",list:D}})},Do=({testConnection:e})=>{const{activeForm:a}=Zn();return{width:"60%",list:a?[t(to,{testConnection:e},a.option.type)]:[t(Pe,{$height:"100%",children:t(B,{icon:Va,title:"Select destination from the list",subTitle:"Add destination so your data has somewhere to go."})},"no-data")]}},To=p.div`
|
|
185
38
|
display: flex;
|
|
186
39
|
flex-direction: column;
|
|
187
40
|
padding: 8px;
|
|
188
41
|
border-radius: 16px;
|
|
189
42
|
border: ${({$purpleColors:e,theme:t})=>e?`1px solid ${t.v2.colors.purple[500]}`:"1px solid transparent"};
|
|
190
43
|
background-color: ${({$noBgColor:e,$purpleColors:t,theme:a})=>e?"transparent":t?a.v2.colors.purple[900]:a.v2.colors.silver[800]};
|
|
191
|
-
`,
|
|
44
|
+
`,No=p.div`
|
|
192
45
|
display: flex;
|
|
193
46
|
align-items: center;
|
|
194
47
|
justify-content: space-between;
|
|
195
48
|
gap: 12px;
|
|
196
49
|
padding: ${({$isOpen:e})=>e?"2px 12px 8px 12px":"2px 12px"};
|
|
197
|
-
`,
|
|
50
|
+
`,Ao=({title:a,tooltip:n,list:o,noBgColor:i,purpleColors:s})=>{const[r,c]=l(!0);return e(To,{"data-id":`collapse-${a}`,$noBgColor:i,$purpleColors:s,children:[e(No,{$isOpen:r,children:[e(g,{$gap:10,children:[t(f,{size:v.XS,children:a}),n&&t(te,{text:n,withIcon:!0}),t(re,{label:o.length,status:s?Q.Default:void 0})]}),t(Me,{icon:r?Ba:_a,size:Le.M,onClick:()=>c(e=>!e)})]}),r?t(h,{children:o.length?u.toArray(o):t(Pe,{$padding:"12px 0",children:t(B,{})})}):null]})},Eo=(e,t,a)=>t||a.signalType?e.filter(e=>e.displayName.toLowerCase().includes(t.toLowerCase())&&(!a.signalType||W(e.supportedSignals).includes(a.signalType))):e,xo=({option:e,formData:a,testResult:n,isSelected:o,onSelect:l})=>t(xn,{icon:_e(e.type).icon,title:a?.name||e.displayName,withCarret:!0,purpleColors:!!a,isSelected:o,onClick:()=>l(),children:n&&t(re,{status:n.succeeded?Q.Success:Q.Error,leftIcon:n.succeeded?za:Ua})}),Ro=({listType:e,destinationOptions:a,unsavedDestinations:n})=>{const{activeForm:o,onChangeActiveForm:l}=Zn();return a?.length?t(Ao,{title:Be[e].TITLE,tooltip:Be[e].DESCRIPTION,list:a.map((a,n)=>t(xo,{option:a,isSelected:o?.listType===e&&"number"!=typeof o?.unsavedIdx&&(null!=a.id&&""!==a.id?o?.option.id===a.id:o?.option.type===a.type),onSelect:()=>l({listType:e,option:a})},`${e}-${a.id??a.type}-${n}`))}):n?.length?t(Ao,{purpleColors:!0,title:Be[e].TITLE,tooltip:Be[e].DESCRIPTION,list:n.map(({option:a,formData:n,testResult:i},s)=>t(xo,{option:a,formData:n,testResult:i,isSelected:o?.unsavedIdx===s&&o?.listType===e,onSelect:()=>l({listType:e,option:a,unsavedIdx:s})},`${e}-${s}`))},e):void 0},Oo=({isFetchingCategories:e,isFetchingPotentialDestinations:a,destinationsByCategory:n,searchText:o,filters:l})=>{const{unsavedDestinations:i}=Zn();return{width:"40%",list:c(()=>{const s=[];i.length&&s.push(t(Ro,{listType:H.UNSAVED,unsavedDestinations:i},"unsaved"));for(const e of Object.values(H)){if(l.categoryType&&l.categoryType!==e)continue;const a=Eo(n[e],o,l);a.length&&s.push(t(Ro,{listType:e,destinationOptions:a},e))}return(e||a)&&s.push(t(Pe,{children:t(Ve,{title:"Fetching destinations",withSpinner:!0})},"loading-more")),s},[i,n,o,l,e,a])}},$o=({destinationsByCategory:n,filters:o,setFilters:l})=>{const i=c(()=>Object.values(H).map(e=>({id:e,label:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()})).filter(e=>n[e.id]?.length),[n]),s=c(()=>{const e=Object.values(G).map(e=>({value:e,label:e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}));return e.unshift({value:null,label:"All"}),e},[]);return e(a,{children:[t(ze,{placeholder:"Select category",options:i,values:o.categoryType?[o.categoryType]:[],setValues:e=>l({...o,categoryType:o.categoryType===e[0]?null:e[0]})}),t(z,{size:Ue.S,options:s,selected:o.signalType,setSelected:e=>l({...o,signalType:e})})]})};var Po;!function(e){e.SELF_HOSTED="self hosted",e.MANAGED="managed"}(Po||(Po={}));const Fo=(e,t)=>{const a=[],n=[],o=[];return e&&e.destinationCategories.categories.forEach(e=>{e.name===Po.SELF_HOSTED?n.push(...e.items):e.name===Po.MANAGED&&o.push(...e.items)}),t&&t?.potentialDestinations.forEach(t=>{for(const n of e?.destinationCategories?.categories||[]){const e=V(n),o=e.items.findIndex(e=>e.type===t.type);if(-1!==o){const n=K(t.fields,{});Object.keys(n).length&&(e.items[o].fields=e.items[o].fields.map(e=>({...e,initialValue:n[e.name]})),a.push(e.items[o]))}}}),{detectedDestinations:a,selfHostedDestinations:n,managedDestinations:o}},Mo=({onClose:e,onBack:a,onNext:o,selectedConnectionIds:s,setSelectedConnectionIds:r,getDestinationCategories:c,getPotentialDestinations:d,initialInputs:u,testConnection:p,createDestination:m,updateDestination:h,withOverlay:g,disableAnimation:b})=>{const[f,v]=l(""),[y,C]=l({categoryType:null,signalType:null}),{destinations:S}=je(),{activeForm:k,genericForm:w,formErrorMessage:I,unsavedDestinations:D,setUnsavedDestinations:T}=Zn();n(()=>{u&&T(u)},[u]);const[N,A]=l(!0),[E,x]=l(!0),[R,O]=l([]),[$,P]=l({[H.ALL]:[],[H.UNSAVED]:[],[H.EXISTS]:[],[H.DETECTED]:[],[H.SELF_HOSTED]:[],[H.MANAGED]:[]});n(()=>{const e=S.map(e=>{let t;for(const a of R){const n=a.items.find(t=>t.type===e.destinationType.type);if(n){t=n;break}}const a=K(e.fields,{});return{id:e.id,type:e.destinationType.type,displayName:e.name||e.destinationType.displayName,selected:!0,testConnectionSupported:t?.testConnectionSupported??!1,supportedSignals:e.destinationType.supportedSignals,fields:t?t.fields.map(e=>({...e,initialValue:a[e.name]??e.initialValue})):[]}});P(t=>({...t,[H.EXISTS]:e}))},[S,R]);const F=i(async()=>{try{A(!0),x(!0);const e=await c();e&&O(e.destinationCategories.categories);const{selfHostedDestinations:t,managedDestinations:a}=Fo(e);P(e=>({...e,[H.SELF_HOSTED]:t,[H.MANAGED]:a})),A(!1);const n=await d(),{detectedDestinations:o}=Fo(e,n);P(e=>({...e,[H.DETECTED]:o}))}catch(e){}finally{A(!1),x(!1)}},[]);n(()=>{F()},[]);const M=i(async()=>{const e=(await Promise.all(D.map(({option:e,formData:t})=>{const a=Z(t);if(e.id){const t=Object.fromEntries(e.fields.map(e=>[e.name,e.initialValue??""])),n=Object.fromEntries(a.fields.map(e=>[e.key,e.value??""]));if(!Object.keys(t).some(e=>t[e]!==n[e]))return h(e.id,a,s)}return m(a,s)}))).filter(e=>e?.error);if(e.length)return{error:e.map(e=>e?.error).join("\n")}},[D,s,m,h]);return t(kn,{isOpen:!0,withOverlay:g,disableAnimation:b,onClose:e,onBack:a?()=>a(D):void 0,onNext:o?()=>o(D):void 0,nextIsSkip:!D.length,onSave:M,disableSave:!k&&!D.length,isFetching:N||E,errorMessage:I,isFormDirty:w?.isFormDirty,hideDirtyNote:!0,progress:{title:Fe.CREATING_DESTINATION,subTitle:Fe.CREATING_DESTINATION_SUBTITLE},header:{icon:Va,title:Fe.ADD_DESTINATIONS,subTitle:Fe.ADD_DESTINATION_DRAWER_DESCRIPTION},connectionIds:s&&r?{value:s,setValue:r}:void 0,search:{value:f,onChange:v},filters:t($o,{destinationsByCategory:$,filters:y,setFilters:C}),leftColumn:Oo({isFetchingCategories:N,isFetchingPotentialDestinations:E,destinationsByCategory:$,searchText:f,filters:y}),rightColumn:Do({testConnection:p})})},Lo=({onClose:e,selectedConnectionIds:a,setSelectedConnectionIds:n,createInstrumentationRule:o,withOverlay:i})=>{const[s,r]=l(""),u=d(null),{selectedOption:p,onSelectOption:m,genericForm:h,validateFormData:g,errorMessage:b}=mo(),f=c(()=>s?Xe.filter(e=>e.label.toLowerCase().includes(s.toLowerCase())):Xe,[s]),v=c(()=>f.map(e=>{const a=p?.type===e.type;return t(xn,{dataId:`option-${e.type}`,title:e.label,description:e.description,withCarret:!0,isSelected:a,onClick:()=>{u.current?.clearErrors(),m(e)}},e.type)}),[p,f.length,m]),y=c(()=>p?[t(ho,{},p.type)]:[t(Pe,{$height:"100%",children:t(B,{icon:ja,title:"Instrumentation rule not selected",subTitle:"Please select an instrumentation rule to add"})},"no-data")],[p]);return t(kn,{ref:u,isOpen:!0,withOverlay:i,onClose:e,onSave:async()=>{const{errorMessage:e,preparedFormData:t}=g();return e?Promise.resolve({error:e}):await o(t)},disableSave:!p||!h?.isFormDirty,isFormDirty:h?.isFormDirty,hideDirtyNote:!0,errorMessage:b,progress:{title:Fe.CREATING_INSTRUMENTATION_RULE,subTitle:Fe.CREATING_INSTRUMENTATION_RULE_SUBTITLE},header:{icon:ja,title:Fe.ADD_INSTRUMENTATION_RULE,subTitle:Fe.ADD_INSTRUMENTATION_RULE_DESCRIPTION},connectionIds:a&&n?{value:a,setValue:n}:void 0,search:{value:s,onChange:r},leftColumn:{width:"40%",list:v},rightColumn:{width:"60%",list:y}})},Vo=p.div``,Bo=p.div`
|
|
198
51
|
visibility: hidden;
|
|
199
52
|
|
|
200
53
|
transition: visibility 0s;
|
|
@@ -202,19 +55,31 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
202
55
|
transition-duration: 0s;
|
|
203
56
|
}
|
|
204
57
|
|
|
205
|
-
${
|
|
58
|
+
${Vo}:hover & {
|
|
206
59
|
visibility: visible;
|
|
207
60
|
}
|
|
208
|
-
`,
|
|
61
|
+
`,_o=({workloadName:e,workloadKind:a,isChecked:n,onToggle:o,disabled:l,disabledReason:i})=>{const s=m(),r=()=>{};return t(Vo,{children:t(xn,{dataId:`source-${e}`,title:e,disabled:l,onClick:l?r:o,isChecked:n,onCheckboxChange:l?r:o,children:l&&i?t(re,{label:i,status:Q.Default,textSize:v.XXXS}):t(Bo,{children:t(re,{label:a,status:Q.Info,textSize:v.XXXS,backgroundColor:s.v2.colors.blue[900]})})})})},zo=({formData:a,handleSourceChange:n,handleSelectAll:o,selectedArea:l,searchText:i,searchBy:s,filters:r})=>{const{tier:d}=ue(),u=d===fe.Onprem,p=c(()=>l.value.namespaceName?a.find(({clusterId:e})=>e===l.value.clusterId)?.namespaces.find(({name:e})=>e===l.value.namespaceName):void 0,[a,l.value.clusterId,l.value.namespaceName]),m=c(()=>p?[...p.workloads].sort((e,t)=>e.name.localeCompare(t.name)).filter(e=>ge(e,i,r)):[],[p,i,r]),h=c(()=>!!m.length&&m.every(({selected:e})=>e),[m]),b=c(()=>{if(!p)return[];const{clusterId:e}=l.value,{name:a}=p;return m.map(({name:o,selected:l,kind:i})=>{const s=!u&&he.has(i);return t(_o,{workloadName:o,workloadKind:i,isChecked:!s&&(l||!1),onToggle:()=>n({clusterId:e,workloadId:{namespace:a,name:o,kind:i}}),disabled:s,disabledReason:"Enterprise only"},`${e}#${a}#${o}#${i}`)})},[m,p,l.value.clusterId]),{withFilterCount:y,filteredCount:C,totalCount:S}=c(()=>{const e=p?.workloads.length??0;return{withFilterCount:m.length!==e,filteredCount:m.length,totalCount:e}},[m,p]);return{width:"40%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(f,{size:v.XS,nowrap:!0,children:l.value.namespaceName?`${l.value.namespaceName} > Workloads`:"Workloads"}),t(te,{text:y?Fe.FILTERED_COUNT_TOOLTIP:void 0,children:t(re,{label:`${y?`${C} / ${S}`:S}`,status:He.Unknown})})]}),t(f,{"data-id":"workloads-select-all",onClick:()=>o({clusterId:l.value.clusterId,namespaceName:l.value.namespaceName,boolean:!h,searchText:i,searchBy:s,filters:r}),disabled:!b.length,size:v.XS,children:(h?"Unselect":"Select")+" all"})]}),list:b.length?b:[t(Pe,{$height:"100%",children:t(B,p?i?{icon:Xa,title:"No matches",subTitle:`No sources matched the filter '${i}'`}:{icon:Xa,title:"No sources",subTitle:"No sources found in this namespace"}:{icon:Xa,title:Fe.SELECT_NAMESPACE,subTitle:Fe.SELECT_NAMESPACE_SUBTITLE})},"no-data")]}},Uo=p.div``,jo=p.div`
|
|
209
62
|
visibility: ${({$visible:e})=>e?"visible":"hidden"};
|
|
210
63
|
|
|
211
64
|
transition: visibility 0s;
|
|
212
65
|
${({$visible:e})=>!e&&"& * {\n transition-duration: 0s !important;\n }"}
|
|
213
66
|
|
|
214
|
-
${
|
|
67
|
+
${Uo}:hover & {
|
|
215
68
|
visibility: visible;
|
|
216
69
|
}
|
|
217
|
-
`,gi=({clusterId:a,namespaceName:n,checkbox:o,isFutureApps:l,selectedCounts:r,isActive:i,onActive:s,handleSourceChange:c})=>{const d=m(),u=e=>{s(),c({clusterId:a,workloadId:{namespace:n},auto:e.auto,selected:e.all})};return t(mi,{children:t(Kn,{dataId:`namespace-${n}`,withCarret:!0,title:n,isSelected:i,onClick:s,isPartiallyChecked:o.partial,isChecked:o.all,onCheckboxChange:e=>u({auto:e,all:e}),children:e(g,{$gap:12,children:[t(hi,{$visible:i||l,children:t(te,{text:"Automatically instrument all workloads currently in the namespace, and all workloads that will be deployed to this namespace in the future",children:t(A,{label:"Auto",size:rt.S,value:l,onChange:e=>u({auto:e,all:e||void 0})})})}),e(g,{$gap:8,children:[t(v,{variant:Ut.Span,size:b.XXXS,color:d.v2.colors.silver[200],align:"right",children:"Selected"}),t(se,{label:`${r.sourced}/${r.total}`,status:i?Q.Default:_t.Unknown,minWidth:"42px"})]})]})})})},fi=({withCollapse:e,clusterId:a,clusterName:n,namespaces:o,selectedArea:l,setSelectedArea:r,handleSourceChange:i})=>{const s=c(()=>o.map(({name:e,totalWorkloads:o,selectedCount:s,isAllSourced:c,isSomeSourced:d,isFutureApps:u})=>t(gi,{clusterId:a,namespaceName:e,isFutureApps:u,checkbox:{all:c,partial:d},selectedCounts:{sourced:s,total:o},isActive:l.clusterId===a&&l.namespaceName===e,onActive:()=>r({clusterId:a,clusterName:n,namespaceName:e}),handleSourceChange:i},`${a}#${e}`)),[a,n,o,l]);return e?t(Zr,{title:n,list:s,noBgColor:!0}):s},vi=({isFetching:a,formData:n,handleSourceChange:o,handleSelectAll:l,selectedArea:r,setSelectedArea:i,searchText:s,searchBy:d,filters:u})=>{const p=c(()=>n.map(e=>{const t=[...e.namespaces].sort((e,t)=>e.name.localeCompare(t.name)).filter(e=>fe(e,s,u)).map(e=>({name:e.name,totalWorkloads:e.workloads.length,...jt(e)}));return{clusterId:e.clusterId,clusterName:e.clusterName,visibleNamespaces:t}}),[n,s,u]),m=c(()=>{let e=!1;for(const{visibleNamespaces:t}of p)for(const{totalWorkloads:a,selectedCount:n}of t)if(e=!0,n!==a)return!1;return e},[p]),{list:h,withFilterCount:f,filteredCount:y,totalCount:S}=c(()=>{const e=p.map(({clusterId:e,clusterName:a,visibleNamespaces:n})=>n.length?t(fi,{withCollapse:p.length>1,clusterId:e,clusterName:a,namespaces:n,selectedArea:r,setSelectedArea:i,handleSourceChange:o},e):null),a=e.filter(e=>null!==e);return{list:a,withFilterCount:a.length!==e.length,filteredCount:a.length,totalCount:e.length}},[p,r]);return{width:"60%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(v,{size:b.XS,nowrap:!0,children:"Namespaces"}),t(te,{text:f?$t.FILTERED_COUNT_TOOLTIP:void 0,children:t(se,{label:`${f?`${y} / ${S}`:S}`,status:_t.Unknown})})]}),t(v,{"data-id":"namespaces-select-all",onClick:()=>l({boolean:!m,searchText:s,searchBy:d,filters:u}),disabled:!h.length,size:b.XS,children:(m?"Unselect":"Select")+" all"})]}),list:h.length?h:a?[t(Pt,{$height:"100%",children:t(Ft,{title:$t.FETCHING_NAMESPACES,subTitle:$t.FETCHING_NAMESPACES_SUBTITLE,withSpinner:!0})},"loading")]:[]}},bi=({onClose:a,onBack:n,onNext:o,selectedConnectionIds:r,setSelectedConnectionIds:i,persistSources:s,withOverlay:c,disableAnimation:d})=>{const u=m(),{progress:p,resetProgress:h}=Ht(),{isFetching:f,formData:y,handleSourceChange:S,handleSelectAll:C,formDiff:k,isFormDirty:w}=Oo(),[T,x]=l(""),[D,N]=l(be.Namespace),[I,E]=l({showOnlySelected:!1}),[R,P]=l({clusterId:"",clusterName:"",namespaceName:""});return t(Vn,{isOpen:!0,withOverlay:c,disableAnimation:d,onClose:a?()=>{h(Wt.BulkInstrumenting),a()}:void 0,onBack:n?()=>n(k):void 0,onNext:o?()=>o(k):void 0,nextIsSkip:!w,onSave:()=>s(k),header:{icon:fn,title:$t.ADD_SOURCE,subTitle:$t.ADD_SOURCES_DESCRIPTION},connectionIds:r&&i?{value:r,setValue:i}:void 0,search:{value:T,onChange:e=>{x(e),D===be.Namespace&&P({clusterId:"",clusterName:"",namespaceName:""})},segment:{options:[{label:"Namespace",value:be.Namespace},{label:"Source",value:be.Source}],selected:D,setSelected:N}},filters:e(g,{$gap:8,children:[t(v,{size:b.XXXS,color:u.v2.colors.silver[200],nowrap:!0,children:"Show only:"}),t(A,{name:"filter-selected",size:rt.S,label:"Selected",value:I.showOnlySelected,onChange:e=>E(t=>({...t,showOnlySelected:e}))})]}),isFormDirty:w,isFetching:f,progress:{title:$t.CREATING_SOURCES,subTitle:$t.CREATING_SOURCES_SUBTITLE,percentage:p[Wt.BulkInstrumenting]?.percentage||0},leftColumn:vi({isFetching:f,formData:y,handleSourceChange:S,handleSelectAll:C,selectedArea:R,setSelectedArea:P,searchText:D===be.Namespace?T:"",searchBy:D,filters:I}),rightColumn:pi({formData:y,handleSourceChange:S,handleSelectAll:C,selectedArea:{value:R},searchText:D===be.Source?T:"",searchBy:D,filters:I})})},yi=({isOpen:e,onClose:a,onSubmit:o,validateForm:l,onNavigateToDuplicate:i})=>{const{category:s,formData:c,resetForm:d,duplicateWarning:u,setDuplicateWarning:p}=vl();n(()=>{e&&d()},[e]);const m=r(()=>{if(l){const e=l(c);if(e)return void p(e)}o(c)},[c,o,l,p]),h={note:u?{status:Q.Warning,message:u.message,action:i?{"data-id":"sampling-create-btn-view-duplicate",label:"View rule",onClick:()=>i(u.ruleId)}:void 0}:void 0,actions:[{"data-id":"sampling-create-btn-cancel",label:Gt,variant:O.Secondary,size:$.S,onClick:a},{"data-id":"sampling-create-btn-submit",label:qt,variant:O.Primary,size:$.S,onClick:m,disabled:!!u}]};return t(Kt,{isOpen:e,width:Qt,header:{icon:vn,title:Jt[s],subTitle:Yt[s],onClose:a},footer:h,children:t(Zt,{$padding:"12px",children:t(nr,{})})})},Si=({category:e,sourceOptions:a,namespaceOptions:n,...o})=>t(fl,{category:e,sourceOptions:a,namespaceOptions:n,children:t(yi,{...o})}),Ci=({isOpen:e,onClose:a,onSave:n})=>{const{localEnabled:o,resolvedPercentage:l}=Mr(),i=r(()=>{n(o,l)},[o,l,n]);return t(Kt,{isOpen:e,width:Qt,header:{icon:vn,title:aa,subTitle:ta,onClose:a},footer:{actions:[{"data-id":"sampling-edit-auto-rule-btn-cancel",label:Gt,variant:O.Secondary,size:$.S,onClick:a},{"data-id":"sampling-edit-auto-rule-btn-save",label:ea,variant:O.Primary,size:$.S,onClick:i}]},children:t(Zt,{$padding:"12px",children:t(Lr,{})})})},ki=({enabled:e,keepPercentage:a,...n})=>t(Or,{enabled:e,keepPercentage:a,children:t(Ci,{...n})}),wi=({isOpen:e,onClose:a,onSave:n})=>{const{localEnabled:o}=Xr(),l=r(()=>{n(o)},[o,n]);return t(Kt,{isOpen:e,width:Qt,header:{icon:vn,title:oa,subTitle:na,onClose:a},footer:{actions:[{"data-id":"sampling-edit-highly-relevant-auto-rule-btn-cancel",label:Gt,variant:O.Secondary,size:$.S,onClick:a},{"data-id":"sampling-edit-highly-relevant-auto-rule-btn-save",label:ea,variant:O.Primary,size:$.S,onClick:l}]},children:t(Zt,{$padding:"12px",children:t(Br,{})})})},Ti=({enabled:e,...a})=>t(Vr,{enabled:e,children:t(wi,{...a})}),xi=({isOpen:e,onClose:a,onSave:n})=>{const{localEnabled:o,resolvedPercentage:l}=Hr(),i=r(()=>{n(o,l)},[o,l,n]);return t(Kt,{isOpen:e,width:Qt,header:{icon:vn,title:ra,subTitle:la,onClose:a},footer:{actions:[{"data-id":"sampling-edit-cost-reduction-auto-rule-btn-cancel",label:Gt,variant:O.Secondary,size:$.S,onClick:a},{"data-id":"sampling-edit-cost-reduction-auto-rule-btn-save",label:ea,variant:O.Primary,size:$.S,onClick:i}]},children:t(Zt,{$padding:"12px",children:t(Kr,{})})})},Di=({enabled:e,dropPercentage:a,...n})=>t(jr,{enabled:e,dropPercentage:a,children:t(xi,{...n})}),Ni=({onClose:a,connections:o,selectedConnectionIds:r,setSelectedConnectionIds:i,getEffectiveConfig:s,onApply:d})=>{const u=m(),[p,h]=l(""),[f,y]=l({showOnlySelected:!1}),S=c(()=>o.filter(e=>{const t=!p||e.name.toLowerCase().includes(p.toLowerCase()),a=!f.showOnlySelected||f.showOnlySelected&&r.includes(e.id);return t&&a}),[o.length,r.length,p,f]),C=e=>{i(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[k,w]=l(!1),[T,x]=l(void 0),{formData:D,handleFormChange:N,areFormValuesEqual:I,resetFormData:E}=L(T||{rollout:{automaticRolloutDisabled:!1}}),R=c(()=>r.length>1||void 0!==T&&!I(T,D),[r.length,T,D]);return n(()=>{1===r.length?(async e=>{if(k)return;w(!0);const t=await s(e);if(t){const e={rollout:{automaticRolloutDisabled:t.rollout?.automaticRolloutDisabled??!1}};x(e),E(e)}w(!1)})(r[0]):x(void 0)},[r.length]),t(Vn,{isOpen:!0,onClose:a,onSave:()=>d(D,r),header:{icon:bn,title:"Cluster Configuration"},connectionIds:{value:r,setValue:i},search:{placeholder:"Search by cluster name",value:p,onChange:h},filters:e(g,{$gap:8,children:[t(v,{size:b.XXXS,color:u.v2.colors.silver[200],nowrap:!0,children:"Show only:"}),t(A,{size:rt.S,label:"Selected",value:f.showOnlySelected,onChange:e=>y(t=>({...t,showOnlySelected:e}))})]}),isFormDirty:R,isFetching:k,leftColumn:{width:"35%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(v,{size:b.XS,children:"Clusters"}),t(se,{label:S.length,status:_t.Unknown})]}),e(g,{$gap:8,children:[t(v,{size:b.XXXS,color:u.v2.colors.silver[200],align:"right",children:"Selected clusters"}),t(se,{label:`${r.length}/${S.length}`,status:_t.Unknown})]})]}),list:S.map(e=>t(Kn,{title:e.name,isChecked:r.includes(e.id),onClick:()=>C(e.id),onCheckboxChange:()=>C(e.id)},e.id))},rightColumn:{width:"65%",header:t(v,{size:b.XS,children:"Configurations"}),list:[t(A,{label:"Automatic rollout disabled",tooltip:"Odigos automatically triggers a one-time rollout for workloads when instrumenting or uninstrumenting, ensuring that changes are applied without requiring manual intervention. When automatic rollout is disabled, Odigos will not restart workloads, and users will need to manually trigger rollouts after adding or removing sources.",value:D.rollout?.automaticRolloutDisabled||!1,onChange:e=>N("rollout.automaticRolloutDisabled",e)},"automatic-rollout-disabled")]}})},Ai=({token:n,isLoading:o,isEditing:l,onEdit:r,onCancel:i,onSave:s,formData:c,handleFormChange:d,handleErrorChange:u,formErrors:p})=>{const{CopyButton:m}=ia(),h=!l||o||!c.newToken;return sa({key:"Enter",active:!h},s),e(g,l?{$justifyContent:"space-between",$alignItems:"flex-start",$gap:12,children:[t(w,{type:"password",value:c.newToken,onChange:e=>{d("newToken",e.target.value),u("newToken",void 0)},width:"430px",autoFocus:!0,errorMessage:p.newToken}),t(g,{$margin:o?"8px 0 0 0":"2px 0 0 0",$alignItems:"center",children:o?t(Ft,{title:"Saving...",withGradient:!0}):e(a,{children:[t(P,{variant:O.Secondary,size:$.S,leftIcon:cn,onClick:i,disabled:o}),t(P,{variant:O.Primary,size:$.S,leftIcon:hn,onClick:s,disabled:h})]})})]}:{$justifyContent:"space-between",$gap:12,children:[t(v,{size:b.XS,children:new Array(55).fill("•").join("")}),e(g,{$alignItems:"center",$justifyContent:"space-between",children:[t(m,{value:n}),t(Ot,{icon:ln,onClick:r})]})]})},Ii=({expiresAt:e,callbackValid:a,callbackExpired:o})=>{const{formatTimeAgo:l}=ca(),r=c(()=>l(e),[e]),i=c(()=>new Date(e).toDateString().split(" ").slice(1).join(" "),[e]),s=c(()=>da(e,0)?Q.Error:da(e,2592e6)?Q.Warning:Q.Success,[e]),d=c(()=>s===Q.Success?hn:s===Q.Warning?yn:Sn,[s]);return n(()=>{s===Q.Success?a():s===Q.Error&&o()},[s]),t(te,{text:i,children:t(se,{leftIcon:d,label:r,status:s,invertColors:!0,useSecondaryTone:!0})})},Ei=p.div`
|
|
70
|
+
`,Xo=({clusterId:a,namespaceName:n,checkbox:o,isFutureApps:l,selectedCounts:i,isActive:s,onActive:r,handleSourceChange:c})=>{const d=m(),u=e=>{r(),c({clusterId:a,workloadId:{namespace:n},auto:e.auto,selected:e.all})};return t(Uo,{children:t(xn,{dataId:`namespace-${n}`,withCarret:!0,title:n,isSelected:s,onClick:r,isPartiallyChecked:o.partial,isChecked:o.all,onCheckboxChange:e=>u({auto:e,all:e}),children:e(g,{$gap:12,children:[t(jo,{$visible:s||l,children:t(te,{text:"Automatically instrument all workloads currently in the namespace, and all workloads that will be deployed to this namespace in the future",children:t(A,{label:"Auto",size:We.S,value:l,onChange:e=>u({auto:e,all:e||void 0})})})}),e(g,{$gap:8,children:[t(f,{variant:Ge.Span,size:v.XXXS,color:d.v2.colors.silver[200],align:"right",children:"Selected"}),t(re,{label:`${i.sourced}/${i.total}`,status:s?Q.Default:He.Unknown,minWidth:"42px"})]})]})})})},Ho=({withCollapse:e,clusterId:a,clusterName:n,namespaces:o,selectedArea:l,setSelectedArea:i,handleSourceChange:s})=>{const r=c(()=>o.map(({name:e,totalWorkloads:o,selectedCount:r,isAllSourced:c,isSomeSourced:d,isFutureApps:u})=>t(Xo,{clusterId:a,namespaceName:e,isFutureApps:u,checkbox:{all:c,partial:d},selectedCounts:{sourced:r,total:o},isActive:l.clusterId===a&&l.namespaceName===e,onActive:()=>i({clusterId:a,clusterName:n,namespaceName:e}),handleSourceChange:s},`${a}#${e}`)),[a,n,o,l]);return e?t(Ao,{title:n,list:r,noBgColor:!0}):r},Wo=({isFetching:a,formData:n,handleSourceChange:o,handleSelectAll:l,selectedArea:i,setSelectedArea:s,searchText:r,searchBy:d,filters:u})=>{const p=c(()=>n.map(e=>{const t=[...e.namespaces].sort((e,t)=>e.name.localeCompare(t.name)).filter(e=>be(e,r,u)).map(e=>({name:e.name,totalWorkloads:e.workloads.length,...qe(e)}));return{clusterId:e.clusterId,clusterName:e.clusterName,visibleNamespaces:t}}),[n,r,u]),m=c(()=>{let e=!1;for(const{visibleNamespaces:t}of p)for(const{totalWorkloads:a,selectedCount:n}of t)if(e=!0,n!==a)return!1;return e},[p]),{list:h,withFilterCount:b,filteredCount:y,totalCount:C}=c(()=>{const e=p.map(({clusterId:e,clusterName:a,visibleNamespaces:n})=>n.length?t(Ho,{withCollapse:p.length>1,clusterId:e,clusterName:a,namespaces:n,selectedArea:i,setSelectedArea:s,handleSourceChange:o},e):null),a=e.filter(e=>null!==e);return{list:a,withFilterCount:a.length!==e.length,filteredCount:a.length,totalCount:e.length}},[p,i]);return{width:"60%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(f,{size:v.XS,nowrap:!0,children:"Namespaces"}),t(te,{text:b?Fe.FILTERED_COUNT_TOOLTIP:void 0,children:t(re,{label:`${b?`${y} / ${C}`:C}`,status:He.Unknown})})]}),t(f,{"data-id":"namespaces-select-all",onClick:()=>l({boolean:!m,searchText:r,searchBy:d,filters:u}),disabled:!h.length,size:v.XS,children:(m?"Unselect":"Select")+" all"})]}),list:h.length?h:a?[t(Pe,{$height:"100%",children:t(Ve,{title:Fe.FETCHING_NAMESPACES,subTitle:Fe.FETCHING_NAMESPACES_SUBTITLE,withSpinner:!0})},"loading")]:[t(Pe,{$height:"100%",children:t(B,r?{icon:Ha,title:"No matches",subTitle:`No namespace matched the filter '${r}'`}:{icon:Ha,title:"No namespaces",subTitle:"No namespaces found in this cluster"})},"no-data")]}},Go=({onClose:a,onBack:n,onNext:o,selectedConnectionIds:i,setSelectedConnectionIds:s,persistSources:r,withOverlay:c,disableAnimation:d})=>{const u=m(),{progress:p,resetProgress:h}=Ke(),{isFetching:b,formData:y,handleSourceChange:C,handleSelectAll:S,formDiff:k,isFormDirty:w}=fo(),[I,D]=l(""),[T,N]=l(ve.Namespace),[E,x]=l({showOnlySelected:!1}),[R,O]=l({clusterId:"",clusterName:"",namespaceName:""});return t(kn,{isOpen:!0,withOverlay:c,disableAnimation:d,onClose:a?()=>{h(Ye.BulkInstrumenting),a()}:void 0,onBack:n?()=>n(k):void 0,onNext:o?()=>o(k):void 0,nextIsSkip:!w,onSave:()=>r(k),header:{icon:Xa,title:Fe.ADD_SOURCE,subTitle:Fe.ADD_SOURCES_DESCRIPTION},connectionIds:i&&s?{value:i,setValue:s}:void 0,search:{value:I,onChange:e=>{D(e),T===ve.Namespace&&O({clusterId:"",clusterName:"",namespaceName:""})},segment:{options:[{label:"Namespace",value:ve.Namespace},{label:"Source",value:ve.Source}],selected:T,setSelected:N}},filters:e(g,{$gap:8,children:[t(f,{size:v.XXXS,color:u.v2.colors.silver[200],nowrap:!0,children:"Show only:"}),t(A,{name:"filter-selected",size:We.S,label:"Selected",value:E.showOnlySelected,onChange:e=>x(t=>({...t,showOnlySelected:e}))})]}),isFormDirty:w,isFetching:b,progress:{title:Fe.CREATING_SOURCES,subTitle:Fe.CREATING_SOURCES_SUBTITLE,percentage:p[Ye.BulkInstrumenting]?.percentage||0},leftColumn:Wo({isFetching:b,formData:y,handleSourceChange:C,handleSelectAll:S,selectedArea:R,setSelectedArea:O,searchText:T===ve.Namespace?I:"",searchBy:T,filters:E}),rightColumn:zo({formData:y,handleSourceChange:C,handleSelectAll:S,selectedArea:{value:R},searchText:T===ve.Source?I:"",searchBy:T,filters:E})})},qo=({onClose:a,connections:o,selectedConnectionIds:i,setSelectedConnectionIds:s,getEffectiveConfig:r,onApply:d})=>{const u=m(),[p,h]=l(""),[b,y]=l({showOnlySelected:!1}),C=c(()=>o.filter(e=>{const t=!p||e.name.toLowerCase().includes(p.toLowerCase()),a=!b.showOnlySelected||b.showOnlySelected&&i.includes(e.id);return t&&a}),[o.length,i.length,p,b]),S=e=>{s(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[k,w]=l(!1),[I,D]=l(void 0),{formData:T,handleFormChange:N,areFormValuesEqual:E,resetFormData:x}=L(I||{rollout:{automaticRolloutDisabled:!1}}),R=c(()=>i.length>1||void 0!==I&&!E(I,T),[i.length,I,T]);return n(()=>{1===i.length?(async e=>{if(k)return;w(!0);const t=await r(e);if(t){const e={rollout:{automaticRolloutDisabled:t.rollout?.automaticRolloutDisabled??!1}};D(e),x(e)}w(!1)})(i[0]):D(void 0)},[i.length]),t(kn,{isOpen:!0,onClose:a,onSave:()=>d(T,i),header:{icon:Wa,title:"Cluster Configuration"},connectionIds:{value:i,setValue:s},search:{placeholder:"Search by cluster name",value:p,onChange:h},filters:e(g,{$gap:8,children:[t(f,{size:v.XXXS,color:u.v2.colors.silver[200],nowrap:!0,children:"Show only:"}),t(A,{size:We.S,label:"Selected",value:b.showOnlySelected,onChange:e=>y(t=>({...t,showOnlySelected:e}))})]}),isFormDirty:R,isFetching:k,leftColumn:{width:"35%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(f,{size:v.XS,children:"Clusters"}),t(re,{label:C.length,status:He.Unknown})]}),e(g,{$gap:8,children:[t(f,{size:v.XXXS,color:u.v2.colors.silver[200],align:"right",children:"Selected clusters"}),t(re,{label:`${i.length}/${C.length}`,status:He.Unknown})]})]}),list:C.map(e=>t(xn,{title:e.name,isChecked:i.includes(e.id),onClick:()=>S(e.id),onCheckboxChange:()=>S(e.id)},e.id))},rightColumn:{width:"65%",header:t(f,{size:v.XS,children:"Configurations"}),list:[t(A,{label:"Automatic rollout disabled",tooltip:"Odigos automatically triggers a one-time rollout for workloads when instrumenting or uninstrumenting, ensuring that changes are applied without requiring manual intervention. When automatic rollout is disabled, Odigos will not restart workloads, and users will need to manually trigger rollouts after adding or removing sources.",value:T.rollout?.automaticRolloutDisabled||!1,onChange:e=>N("rollout.automaticRolloutDisabled",e)},"automatic-rollout-disabled")]}})},Ko=p.div`
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
gap: 8px;
|
|
74
|
+
padding: 8px;
|
|
75
|
+
cursor: pointer;
|
|
76
|
+
border-radius: 6px;
|
|
77
|
+
&:hover {
|
|
78
|
+
background-color: ${({theme:e})=>e.v2.colors.silver[800]};
|
|
79
|
+
}
|
|
80
|
+
`,Yo=p.div`
|
|
81
|
+
flex: 1;
|
|
82
|
+
`,Jo=({onClick:a})=>{const n=m().v2.colors.red[500];return e(Ko,{"data-id":"sampling-view-btn-delete",onClick:a,children:[t(f,{size:v.XS,weight:500,color:n,children:et}),t(Aa,{size:16,fill:n})]})};function Qo(n){if(n.isEditing){const{onCancelEdit:o,onSave:l,onDelete:i,duplicateWarning:s}=n;return{children:e(a,{children:[t(Jo,{onClick:i}),s&&t(J,{status:Q.Warning,message:s.message,action:s.onViewRule?{"data-id":"sampling-view-edit-btn-view-duplicate",label:"View rule",onClick:s.onViewRule}:void 0}),t(Yo,{}),t(O,{"data-id":"sampling-view-edit-btn-cancel",label:Je,variant:P.Secondary,size:$.S,onClick:o}),t(O,{"data-id":"sampling-view-edit-btn-save",label:Qe,variant:P.Primary,size:$.S,onClick:l,disabled:!!s})]})}}const{onDelete:o,onCancel:l,onEdit:i}=n;return{children:e(a,{children:[t(Jo,{onClick:o}),t(Yo,{}),t(O,{"data-id":"sampling-view-btn-cancel",label:Je,variant:P.Secondary,size:$.S,onClick:l}),t(O,{"data-id":"sampling-view-btn-edit",label:Ze,variant:P.Primary,size:$.S,onClick:i})]})}}const Zo={[Ce.EditAutoNoisy]:{title:pt,subTitle:ut,toggleId:"sampling-toggle-rule-enabled",cancelId:"sampling-edit-auto-rule-btn-cancel",saveId:"sampling-edit-auto-rule-btn-save"},[Ce.EditAutoCostReduction]:{title:dt,subTitle:ct,toggleId:"sampling-cr-auto-toggle-enabled",cancelId:"sampling-edit-cost-reduction-auto-rule-btn-cancel",saveId:"sampling-edit-cost-reduction-auto-rule-btn-save"},[Ce.EditAutoHighlyRelevant]:{title:rt,subTitle:st,toggleId:"sampling-hr-auto-toggle-enabled",cancelId:"sampling-edit-highly-relevant-auto-rule-btn-cancel",saveId:"sampling-edit-highly-relevant-auto-rule-btn-save"}};function el(e){return{name:e.name,value:e.value,onChange:e.onChange,variant:yt.SuccessError,size:We.S,label:e.value?ft:vt,labelAlign:E.Left}}const tl=({isOpen:e,title:a,subTitle:n,onClose:o,toggleProps:l,footer:i,renderBody:s})=>t(ht,{isOpen:e,width:gt,header:{icon:Ga,title:a,subTitle:n,onClose:o,toggleProps:l},footer:i,children:s?s():t(bt,{$padding:"12px",children:t(yo,{})})}),al=({isOpen:e,onClose:a,onSubmit:o,validateForm:l,onNavigateToDuplicate:s})=>{const{category:r,formData:c,handleChange:d,resetForm:u,duplicateWarning:p,setDuplicateWarning:m}=ye(Ce.Create);n(()=>{e&&u()},[e]);const h=i(()=>{if(l){const e=l(c);if(e)return void m(e)}o(c)},[c,o,l,m]),g={note:p?{status:Q.Warning,message:p.message,action:s?{"data-id":"sampling-create-btn-view-duplicate",label:"View rule",onClick:()=>s(p.ruleId)}:void 0}:void 0,actions:[{"data-id":"sampling-create-btn-cancel",label:Je,variant:P.Secondary,size:$.S,onClick:a},{"data-id":"sampling-create-btn-submit",label:lt,variant:P.Primary,size:$.S,onClick:h,disabled:!!p}]};return t(tl,{isOpen:e,title:it[r],subTitle:at[r],onClose:a,toggleProps:el({name:"sampling-toggle-rule-enabled",value:!c.disabled,onChange:e=>d({disabled:!e})}),footer:g})},nl=({onClose:e,onDelete:a,onSaveEdit:n,validateForm:o,onNavigateToDuplicate:l})=>{const{data:s,isEditing:r,formData:d,handleEdit:u,handleCancelEdit:p,duplicateWarning:m,setDuplicateWarning:h}=ye(Ce.View),g=s?.rule.name||ot,b=r&&s?nt[s.category]:`${g} preview`,f=i(()=>{if(s&&r){if(o){const e=o(d);if(e)return void h(e)}n(d,s.rule.ruleId,s.samplingId)}},[s,r,d,n,o,h]),v=i(()=>{s&&a(s.rule.ruleId,s.samplingId)},[s,a]),y=c(()=>{if(!s)return;const t=m?{message:m.message,onViewRule:l?()=>l(m.ruleId):void 0}:null;return Qo(r?{isEditing:!0,onCancelEdit:p,onSave:f,onDelete:v,duplicateWarning:t}:{isEditing:!1,onDelete:v,onCancel:e,onEdit:u})},[s,r,m,p,f,v,u,e,l]);return t(tl,{isOpen:!!s,title:b,subTitle:s?at[s.category]:"",onClose:e,footer:y})},ol=({isOpen:e,onClose:a,onSave:n})=>{const{localEnabled:o,setLocalEnabled:l,resolvedPercentage:s}=ye(Ce.EditAutoNoisy),r=i(()=>n(o,s),[n,o,s]);return t(sl,{formType:Ce.EditAutoNoisy,isOpen:e,onClose:a,localEnabled:o,setLocalEnabled:l,onSave:r})},ll=({isOpen:e,onClose:a,onSave:n})=>{const{localEnabled:o,setLocalEnabled:l,resolvedPercentage:s}=ye(Ce.EditAutoCostReduction),r=i(()=>n(o,s),[n,o,s]);return t(sl,{formType:Ce.EditAutoCostReduction,isOpen:e,onClose:a,localEnabled:o,setLocalEnabled:l,onSave:r})},il=({isOpen:e,onClose:a,onSave:n})=>{const{localEnabled:o,setLocalEnabled:l}=ye(Ce.EditAutoHighlyRelevant),s=i(()=>n(o),[n,o]);return t(sl,{formType:Ce.EditAutoHighlyRelevant,isOpen:e,onClose:a,localEnabled:o,setLocalEnabled:l,onSave:s})},sl=({formType:e,isOpen:a,onClose:n,localEnabled:o,setLocalEnabled:l,onSave:i})=>{const s=Zo[e];return t(tl,{isOpen:a,title:s.title,subTitle:s.subTitle,onClose:n,toggleProps:el({name:s.toggleId,value:o,onChange:l}),footer:{actions:[{"data-id":s.cancelId,label:Je,variant:P.Secondary,size:$.S,onClick:n},{"data-id":s.saveId,label:mt,variant:P.Primary,size:$.S,onClick:i}]}})},rl=e=>{switch(e.formType){case Ce.Create:return t(tt,{formType:Ce.Create,category:e.category,sourceOptions:e.sourceOptions,namespaceOptions:e.namespaceOptions,children:t(al,{...e})});case Ce.View:return t(tt,{formType:Ce.View,data:e.data,defaultEditMode:e.defaultEditMode,sourceOptions:e.sourceOptions,namespaceOptions:e.namespaceOptions,children:t(nl,{...e})});case Ce.EditAutoNoisy:return t(tt,{formType:Ce.EditAutoNoisy,enabled:e.enabled,keepPercentage:e.keepPercentage,children:t(ol,{...e})});case Ce.EditAutoCostReduction:return t(tt,{formType:Ce.EditAutoCostReduction,enabled:e.enabled,dropPercentage:e.dropPercentage,children:t(ll,{...e})});case Ce.EditAutoHighlyRelevant:return t(tt,{formType:Ce.EditAutoHighlyRelevant,enabled:e.enabled,children:t(il,{...e})})}},cl=({token:n,isLoading:o,isEditing:l,onEdit:i,onCancel:s,onSave:r,formData:c,handleFormChange:d,handleErrorChange:u,formErrors:p})=>{const{CopyButton:m}=Ct(),h=!l||o||!c.newToken;return St({key:"Enter",active:!h},r),e(g,l?{$justifyContent:"space-between",$alignItems:"flex-start",$gap:12,children:[t(w,{type:"password",value:c.newToken,onChange:e=>{d("newToken",e.target.value),u("newToken",void 0)},width:"430px",autoFocus:!0,errorMessage:p.newToken}),t(g,{$margin:o?"8px 0 0 0":"2px 0 0 0",$alignItems:"center",children:o?t(Ve,{title:"Saving...",withGradient:!0}):e(a,{children:[t(O,{variant:P.Secondary,size:$.S,leftIcon:Ua,onClick:s,disabled:o}),t(O,{variant:P.Primary,size:$.S,leftIcon:za,onClick:r,disabled:h})]})})]}:{$justifyContent:"space-between",$gap:12,children:[t(f,{size:v.XS,children:new Array(55).fill("•").join("")}),e(g,{$alignItems:"center",$justifyContent:"space-between",children:[t(m,{value:n}),t(Me,{icon:Pa,onClick:i})]})]})},dl=({expiresAt:e,callbackValid:a,callbackExpired:o})=>{const{formatTimeAgo:l}=kt(),i=c(()=>l(e),[e]),s=c(()=>new Date(e).toDateString().split(" ").slice(1).join(" "),[e]),r=c(()=>wt(e,0)?Q.Error:wt(e,2592e6)?Q.Warning:Q.Success,[e]),d=c(()=>r===Q.Success?za:r===Q.Warning?qa:Ka,[r]);return n(()=>{r===Q.Success?a():r===Q.Error&&o()},[r]),t(te,{text:s,children:t(re,{leftIcon:d,label:i,status:r,invertColors:!0,useSecondaryTone:!0})})},ul=p.div`
|
|
218
83
|
display: flex;
|
|
219
84
|
flex-direction: column;
|
|
220
85
|
gap: 12px;
|
|
@@ -222,7 +87,7 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
222
87
|
border-radius: 12px;
|
|
223
88
|
border: 1px solid ${({theme:e,$isExpired:t})=>t?e.v2.colors.red[500]:e.v2.colors.silver[600]};
|
|
224
89
|
background-color: ${({theme:e,$isExpired:t})=>t?e.v2.colors.red[1e3]:e.v2.colors.silver[800]};
|
|
225
|
-
`,
|
|
90
|
+
`,pl=({children:e})=>{const a=m();return t(f,{size:v.XXXS,color:a.v2.colors.grey[150],children:e})},ml=({token:a,updateToken:n})=>{const[o,i]=l(!1),[s,r]=l(!1),[c,d]=l(!1),{formData:u,handleFormChange:p,formErrors:m,handleErrorChange:b,resetFormData:y}=L({newToken:""});return t(xe,{richTitle:{icon:Ya,title:"Odigos Pro Token"},children:e(ul,{$isExpired:c,children:[e(g,{$justifyContent:"space-between",children:[e(h,{$gap:4,children:[t(pl,{children:"Issued for"}),t(f,{size:v.XS,children:a.name||"N/A"})]}),e(h,{$gap:4,children:[t(pl,{children:"Expiration"}),t(dl,{expiresAt:a.expiresAt,callbackValid:()=>d(!1),callbackExpired:()=>d(!0)})]}),t(h,{})]}),t(g,{children:e(h,{children:[t(pl,{children:"Token"}),t(cl,{token:a.token,newToken:u.newToken,isLoading:s,isEditing:o,onEdit:()=>i(!0),onCancel:()=>(i(!1),r(!1),void p("newToken","")),onSave:()=>(async()=>{r(!0);const e=await n(u.newToken.trim());r(!1),e?.error?b("newToken",e.error):(i(!1),y())})(),formData:u,handleFormChange:p,handleErrorChange:b,formErrors:m})]})})]})})},hl=p.div`
|
|
226
91
|
display: flex;
|
|
227
92
|
flex-direction: column;
|
|
228
93
|
align-items: center;
|
|
@@ -231,19 +96,7 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
231
96
|
padding: 12px 24px;
|
|
232
97
|
border-radius: 8px;
|
|
233
98
|
background-color: ${({theme:e})=>e.v2.colors.silver[800]};
|
|
234
|
-
`,Oi=({downloadDiagnose:a})=>{const n=m(),{progress:o}=Ht(),{namespaces:r}=Xt(),[i,s]=l(null),{formData:c,handleFormChange:d,resetFormData:u}=L({includeProfiles:!0,includeMetrics:!0,includeSourceWorkloads:!1,sourceWorkloadNamespaces:[]});return t(ye,{richTitle:{icon:kn,title:"Diagnose"},children:i?e($i,{children:[t(Ft,{title:"Creating file...",subTitle:"This may take a few moments. Do not refresh the page.",withGradient:!0,withSpinner:"number"==typeof o[Wt.DownloadingDiagnose]?.percentage,percentage:o[Wt.DownloadingDiagnose]?.percentage,withVisual:"number"!=typeof o[Wt.DownloadingDiagnose]?.percentage,visualIcon:wn,startedAt:i}),o[Wt.DownloadingDiagnose]?.list?.length&&t(h,{$width:"100%",children:o[Wt.DownloadingDiagnose].list.map(a=>e(g,{$gap:4,$alignItems:"center",children:[a.status===Q.Success?t(hn,{size:16}):a.status===Q.Error?t(cn,{size:16}):t(Ft,{withSpinnerOld:!0,scaleSpinnerOld:.7}),t(v,{size:b.XXXS,color:n.v2.colors.silver[200],children:a.label})]},a.label))})]}):e(h,{$gap:24,children:[t(v,{size:b.XXS,color:n.v2.colors.silver[200],children:"Download a tar.gz file with diagnostics from this cluster. Select which data to include before downloading, and share the file with the Odigos support team for troubleshooting."}),e(h,{$gap:16,children:[e(g,{$gap:8,children:[t(f,{label:"Profiles",value:c.includeProfiles,onChange:e=>d("includeProfiles",e),tooltip:"Note: Adds 30s to diagnose download time to collect Profiles"}),t(v,{size:b.XXXS,color:n.v2.colors.silver[200],children:"Include pprof profiles"})]}),e(g,{$gap:8,children:[t(f,{label:"Metrics",value:c.includeMetrics,onChange:e=>d("includeMetrics",e)}),t(v,{size:b.XXXS,color:n.v2.colors.silver[200],children:"Include Prometheus metrics"})]}),e(g,{$gap:8,children:[t(f,{label:"Source Workloads",value:c.includeSourceWorkloads,onChange:e=>{d("includeSourceWorkloads",e),e&&d("sourceWorkloadNamespaces",[])}}),t(v,{size:b.XXXS,color:n.v2.colors.silver[200],children:"Include workload and pod manifests for instrumented sources"})]})]}),t(Le,{alignX:pa.Left,alignY:ua.Bottom,items:r.map(e=>({id:e.name,label:e.name,withCheckbox:!0})),selectedIds:c.sourceWorkloadNamespaces,setSelectedIds:e=>d("sourceWorkloadNamespaces",e),withMultiSelect:!0,withSearch:!0,fullWidth:!0,buttonProps:{label:(c.sourceWorkloadNamespaces.length?"Selected":"Select")+" Namespaces",variant:O.Secondary,disabled:c.includeSourceWorkloads,leftIcon:c.sourceWorkloadNamespaces.length?()=>t(se,{label:c.sourceWorkloadNamespaces.length,status:Q.Default}):void 0}}),t(g,{$justifyContent:"flex-end",children:t(P,{label:"Download Diagnose",rightIcon:wn,variant:O.Primary,onClick:async()=>{s(Date.now()),await a(c),s(null),u()},disabled:null!==i})})]})})},Mi=({fetchDescribeOdigos:e})=>{const{platformType:a,version:o,tier:r}=ue(),[i,s]=l(null);return n(()=>{e().then(({data:e})=>s(e?.describeOdigos||null))},[]),t(ye,{richTitle:{icon:Tn,title:"General Information"},children:t(ma,{cellsPerRow:2,items:[{id:ha(),title:"Odigos Version",label:o},{id:ha(),title:`${a.toUpperCase()} Version`,label:i?.kubernetesVersion?.value||"-"},{id:ha(),title:"Installation Method",label:i?.installationMethod?.value||"-"},{id:ha(),title:"Tier",label:r}]})})},Fi=({isOpen:a,onClose:n,token:o,updateToken:l,fetchDescribeOdigos:r,downloadDiagnose:i})=>e(Kt,{isOpen:a,header:{icon:Tn,title:"System Overview",onClose:n},children:[r&&t(Mi,{fetchDescribeOdigos:r}),l&&o&&t(Pi,{token:o,updateToken:l}),i&&t(Oi,{downloadDiagnose:i})]}),Li=p.div`
|
|
235
|
-
display: flex;
|
|
236
|
-
align-items: center;
|
|
237
|
-
gap: 8px;
|
|
238
|
-
padding: 8px;
|
|
239
|
-
cursor: pointer;
|
|
240
|
-
border-radius: 6px;
|
|
241
|
-
&:hover {
|
|
242
|
-
background-color: ${({theme:e})=>e.v2.colors.silver[800]};
|
|
243
|
-
}
|
|
244
|
-
`,zi=p.div`
|
|
245
|
-
flex: 1;
|
|
246
|
-
`,Vi=({onClick:a})=>{const n=m().v2.colors.red[500];return e(Li,{"data-id":"sampling-view-btn-delete",onClick:a,children:[t(v,{size:b.XS,weight:500,color:n,children:va}),t(Za,{size:16,fill:n})]})};function Xi(n){if(n.isEditing){const{onCancelEdit:o,onSave:l,onDelete:r,duplicateWarning:i}=n;return{children:e(a,{children:[t(Vi,{onClick:r}),i&&t(J,{status:Q.Warning,message:i.message,action:i.onViewRule?{"data-id":"sampling-view-edit-btn-view-duplicate",label:"View rule",onClick:i.onViewRule}:void 0}),t(zi,{}),t(P,{"data-id":"sampling-view-edit-btn-cancel",label:Gt,variant:O.Secondary,size:$.S,onClick:o}),t(P,{"data-id":"sampling-view-edit-btn-save",label:ga,variant:O.Primary,size:$.S,onClick:l,disabled:!!i})]})}}const{onDelete:o,onCancel:l,onEdit:r}=n;return{children:e(a,{children:[t(Vi,{onClick:o}),t(zi,{}),t(P,{"data-id":"sampling-view-btn-cancel",label:Gt,variant:O.Secondary,size:$.S,onClick:l}),t(P,{"data-id":"sampling-view-btn-edit",label:fa,variant:O.Primary,size:$.S,onClick:r})]})}}const Bi=({onClose:e,onDelete:a,onSaveEdit:n,validateForm:o,onNavigateToDuplicate:l})=>{const{data:i,isEditing:s,formData:d,handleEdit:u,handleCancelEdit:p,duplicateWarning:m,setDuplicateWarning:h}=wr(),g=i?.rule.name||dt,f=s&&i?ba[i.category]:`${g} preview`,v=r(()=>{if(i&&s){if(o){const e=o(d);if(e)return void h(e)}n(d,i.rule.ruleId,i.samplingId)}},[i,s,d,n,o,h]),b=r(()=>{i&&a(i.rule.ruleId,i.samplingId)},[i,a]),y=c(()=>{if(!i)return;const t=m?{message:m.message,onViewRule:l?()=>l(m.ruleId):void 0}:null;return Xi(s?{isEditing:!0,onCancelEdit:p,onSave:v,onDelete:b,duplicateWarning:t}:{isEditing:!1,onDelete:b,onCancel:e,onEdit:u})},[i,s,m,p,v,b,u,e,l]);return t(Kt,{isOpen:!!i,width:Qt,header:{icon:vn,title:f,subTitle:i?Yt[i.category]:"",onClose:e},footer:y,children:i&&t(Zt,{$padding:"12px",children:t(Rr,{})})})},_i=({data:e,defaultEditMode:a,sourceOptions:n,namespaceOptions:o,...l})=>t(kr,{data:e,defaultEditMode:a,sourceOptions:n,namespaceOptions:o,children:t(Bi,{data:e,...l})});var Ui,ji;!function(e){e.BulkConfig="bulk-config",e.BulkSource="bulk-source",e.BulkDestination="bulk-destination",e.BulkAction="bulk-action",e.BulkInstrumentationRule="bulk-instrumentation-rule",e.Delete="delete"}(Ui||(Ui={})),function(e){e.Id="id",e.Name="name",e.Type="type",e.Status="status",e.OdigosVersion="odigosVersion",e.ConnectedSince="connectedSince",e.LastActivity="lastActivity"}(ji||(ji={}));const Hi=[{key:ji.Name,label:"Name"},{key:ji.Type,label:"Type",textAlign:"right"},{key:ji.Status,label:"Status"},{key:ji.OdigosVersion,label:"Odigos Version"},{key:ji.ConnectedSince,label:"Connected Since"},{key:ji.LastActivity,label:"Last Activity"}],Wi=(e,t)=>{const a=e.find(e=>e.key===ji.Id)?.rawValue;return t(a?.toString()||"")},Ki=e=>{const{connections:t,configMinSupportedVersion:a,snapshotMinSupportedVersion:n,onDelete:o,onAddSource:l,onAddDestination:r,onAddAction:i,onAddInstrumentationRule:s,onEditConfiguration:c}=e;return({cells:e})=>{if(!(e=>e.find(e=>e.key===ji.Status)?.rawValue===Q.Success)(e))return[{id:ha(),label:"Delete Connection",rightIcon:on,onClick:()=>Wi(e,o)}];const d=Wi(e,e=>{const n=t.find(t=>t.id===e);return!!n&&ya(n.odigosVersion,a)}),u=Wi(e,e=>{const a=t.find(t=>t.id===e);return!!a&&ya(a.odigosVersion,n)}),p=[];return l&&p.push({id:ha(),tooltip:u?$t.ADD_SOURCE:`To use this feature, please upgrade to Odigos v${n} or later.`,rightIcon:fn,disabled:!u,onClick:()=>Wi(e,l)}),r&&p.push({id:ha(),tooltip:$t.ADD_DESTINATION,rightIcon:un,onClick:()=>Wi(e,r)}),i&&p.push({id:ha(),tooltip:$t.ADD_ACTION,rightIcon:dn,onClick:()=>Wi(e,i)}),s&&p.push({id:ha(),tooltip:$t.ADD_INSTRUMENTATION_RULE,rightIcon:gn,onClick:()=>Wi(e,s)}),c&&p.push({id:ha(),tooltip:d?"Edit Configuration":`To use this feature, please upgrade to Odigos v${a} or later.`,rightIcon:bn,disabled:!d,onClick:()=>Wi(e,c)}),p}},Gi=({tableRowsMaxHeight:a,connections:o,getConnections:i,onClickConnection:s,deleteConnection:d,configMinSupportedVersion:u=0,getEffectiveConfig:p,applyConfigurations:h,snapshotMinSupportedVersion:g=0,getAllClusterSnapshots:f,persistSources:v,getDestinationCategories:b,getPotentialDestinations:y,testConnection:S,createDestination:C,updateDestination:k,createAction:w,createInstrumentationRule:T})=>{const x=m(),{isVm:D}=ue(),{formatTimeAgo:N}=ca(),[A,I]=l(!1),[E,R]=l(o||[]),P=r(async()=>{try{I(!0),R(await i()??[])}catch(e){}finally{I(!1)}},[]);n(()=>{E.length||P()},[]);const[M,F]=l(""),[L,z]=l(null),[V,X]=l([]),B=c(()=>L===Ui.BulkConfig?u:L===Ui.BulkSource?g:0,[L,u,g]),{supportedConnections:_,supportedConnectionIds:U}=c(()=>{const e=((e,t)=>e.filter(e=>{const a=e.status===Q.Success,n=ya(e.odigosVersion,t);return a&&n}))(E,B);return{supportedConnections:e,supportedConnectionIds:e.map(e=>e.id)}},[E.length,B]);n(()=>{if(!L||L===Ui.Delete)return;const e=V.filter(e=>!U.includes(e));e.length&&X(t=>t.filter(t=>!e.includes(t)))},[L,V.length,U.length]);const j=c(()=>E.filter(e=>!M||e.name.toLowerCase().includes(M.toLowerCase())).map(e=>({cells:[{key:ji.Id,rawValue:e.id},{key:ji.Name,rawValue:e.name},{key:ji.Type,rawValue:e.type},{key:ji.Status,rawValue:e.status,component:()=>(e=>{const a=e===Q.Success?"Connection live":"Connection lost",n=e===Q.Success?hn:cn;return t(se,{status:e,label:a,leftIcon:n})})(e.status)},{key:ji.OdigosVersion,rawValue:e.odigosVersion},{key:ji.ConnectedSince,rawValue:e.connectedAt?N(e.connectedAt):"-"},{key:ji.LastActivity,rawValue:e.lastSeenAt?N(e.lastSeenAt):"-"}],onClick:e.status!==Q.Success||L?void 0:()=>s(e),isSelected:V.includes(e.id),onSelect:()=>X(t=>Array.from(new Set([...t,e.id]))),onDeselect:()=>X(t=>t.filter(t=>t!==e.id)),hideCheckbox:e.status!==Q.Success||L===Ui.BulkConfig&&!ya(e.odigosVersion,u)||L===Ui.BulkSource&&!ya(e.odigosVersion,g)})),[E,V,M,L,u,g]),H=c(()=>{const e=(e,t)=>{X([e]),z(t)};return Ki({connections:E,configMinSupportedVersion:u,snapshotMinSupportedVersion:g,onDelete:t=>e(t,Ui.Delete),onAddSource:!D&&f&&v?t=>e(t,Ui.BulkSource):void 0,onAddDestination:!D&&b&&y&&C?t=>e(t,Ui.BulkDestination):void 0,onAddAction:!D&&w?t=>e(t,Ui.BulkAction):void 0,onAddInstrumentationRule:!D&&T?t=>e(t,Ui.BulkInstrumentationRule):void 0,onEditConfiguration:!D&&p&&h?t=>e(t,Ui.BulkConfig):void 0})},[D,E,u,p,h,g,f,v,b,y,C,w,T]),W=c(()=>(e=>{const{onCancel:t,onAddSource:a,onAddDestination:n,onAddAction:o,onAddInstrumentationRule:l,onManageConfigurations:r}=e,i=[];a&&i.push({id:ha(),type:Sa.Button,buttonProps:{variant:O.Primary,size:$.S,label:"Add Sources",rightIcon:fn,onClick:a}});const s=[n?{id:Ui.BulkDestination,label:$t.ADD_DESTINATION,icon:un}:null,o?{id:Ui.BulkAction,label:$t.ADD_ACTION,icon:dn}:null,l?{id:Ui.BulkInstrumentationRule,label:$t.ADD_INSTRUMENTATION_RULE,icon:gn}:null,r?{id:Ui.BulkConfig,label:"Manage Configurations",icon:bn}:null];return s.some(Boolean)&&i.push({id:ha(),type:Sa.ButtonDropData,buttonProps:{variant:O.Secondary,size:$.S,label:"Bulk Operations",onClick:e=>{e===Ui.BulkSource?a?.():e===Ui.BulkDestination?n?.():e===Ui.BulkAction?o?.():e===Ui.BulkInstrumentationRule?l?.():e===Ui.BulkConfig&&r?.()}},dropDataProps:{alignX:pa.Left,items:s}}),i.push({id:ha(),type:Sa.Button,buttonProps:{variant:O.Text,size:$.S,label:Ca.CANCEL,onClick:t}}),i})({onCancel:()=>X([]),onAddSource:!D&&f&&v?()=>z(Ui.BulkSource):void 0,onAddDestination:!D&&b&&y&&C?()=>z(Ui.BulkDestination):void 0,onAddAction:!D&&w?()=>z(Ui.BulkAction):void 0,onAddInstrumentationRule:!D&&T?()=>z(Ui.BulkInstrumentationRule):void 0,onManageConfigurations:!D&&p&&h?()=>z(Ui.BulkConfig):void 0}),[D,p,h,f,v,b,y,C,w,T]);return t(ka,{children:e(ye,{richTitle:{icon:Dn,title:$t.CONNECTIONS,badge:{label:E.length.toString(),status:_t.Unknown}},search:{placeholder:"Search by cluster name",value:M,onChange:e=>F(e),width:"300px"},actions:[{id:ha(),type:Sa.Button,buttonProps:{variant:O.Secondary,size:$.S,leftIcon:xn,onClick:P,disabled:A}}],children:[t(wa,{variant:Ta.Pretty,maxHeight:a,headerBackgroundColor:x.v2.colors.silver[1e3],isLoading:A,withCheckboxes:!0,columns:Hi,rows:j,rowActionsPushRightPosition:L?`calc(${Xn} - 24px)`:void 0,getRowActions:H}),L===Ui.BulkConfig&&p&&h&&t(Ni,{onClose:()=>z(null),connections:_,selectedConnectionIds:V,setSelectedConnectionIds:X,getEffectiveConfig:p,onApply:h}),L===Ui.BulkSource&&f&&v&&t($o,{selectedConnectionIds:V,getAllClusterSnapshots:f,children:t(bi,{onClose:()=>z(null),selectedConnectionIds:V,setSelectedConnectionIds:X,persistSources:async e=>await(v?.(e))})}),L===Ui.BulkDestination&&b&&y&&S&&C&&k&&t(fo,{children:t(ii,{onClose:()=>z(null),selectedConnectionIds:V,setSelectedConnectionIds:X,getDestinationCategories:b,getPotentialDestinations:y,testConnection:e=>S(e,V),createDestination:e=>C(e,V),updateDestination:(e,t)=>k(e,t,V)})}),L===Ui.BulkAction&&w&&t(so,{children:t(qr,{onClose:()=>z(null),selectedConnectionIds:V,setSelectedConnectionIds:X,createAction:e=>w(e,V)})}),L===Ui.BulkInstrumentationRule&&T&&t(Io,{children:t(si,{onClose:()=>z(null),selectedConnectionIds:V,setSelectedConnectionIds:X,createInstrumentationRule:e=>T(e,V)})}),t(Bn,{target:"connection",isOpen:L===Ui.Delete,onClose:()=>{X([]),z(null)},onApprove:async()=>{const e=V[0];e&&(await d(e),await P())}}),t(xa,{isOpen:!!V.length&&!L,richTitle:{icon:an,title:"Selected Clusters",badge:{label:V.length}},actions:W})]})})},qi=p.div`
|
|
99
|
+
`,gl=({downloadDiagnose:a})=>{const n=m(),{progress:o}=Ke(),{namespaces:i}=je(),[s,r]=l(null),{formData:c,handleFormChange:d,resetFormData:u}=L({includeProfiles:!0,includeMetrics:!0,includeSourceWorkloads:!1,sourceWorkloadNamespaces:[]});return t(xe,{richTitle:{icon:Ja,title:"Diagnose"},children:s?e(hl,{children:[t(Ve,{title:"Creating file...",subTitle:"This may take a few moments. Do not refresh the page.",withGradient:!0,withSpinner:"number"==typeof o[Ye.DownloadingDiagnose]?.percentage,percentage:o[Ye.DownloadingDiagnose]?.percentage,withVisual:"number"!=typeof o[Ye.DownloadingDiagnose]?.percentage,visualIcon:Qa,startedAt:s}),o[Ye.DownloadingDiagnose]?.list?.length&&t(h,{$width:"100%",children:o[Ye.DownloadingDiagnose].list.map(a=>e(g,{$gap:4,$alignItems:"center",children:[a.status===Q.Success?t(za,{size:16}):a.status===Q.Error?t(Ua,{size:16}):t(Ve,{withSpinnerOld:!0,scaleSpinnerOld:.7}),t(f,{size:v.XXXS,color:n.v2.colors.silver[200],children:a.label})]},a.label))})]}):e(h,{$gap:24,children:[t(f,{size:v.XXS,color:n.v2.colors.silver[200],children:"Download a tar.gz file with diagnostics from this cluster. Select which data to include before downloading, and share the file with the Odigos support team for troubleshooting."}),e(h,{$gap:16,children:[e(g,{$gap:8,children:[t(b,{label:"Profiles",value:c.includeProfiles,onChange:e=>d("includeProfiles",e),tooltip:"Note: Adds 30s to diagnose download time to collect Profiles"}),t(f,{size:v.XXXS,color:n.v2.colors.silver[200],children:"Include pprof profiles"})]}),e(g,{$gap:8,children:[t(b,{label:"Metrics",value:c.includeMetrics,onChange:e=>d("includeMetrics",e)}),t(f,{size:v.XXXS,color:n.v2.colors.silver[200],children:"Include Prometheus metrics"})]}),e(g,{$gap:8,children:[t(b,{label:"Source Workloads",value:c.includeSourceWorkloads,onChange:e=>{d("includeSourceWorkloads",e),e&&d("sourceWorkloadNamespaces",[])}}),t(f,{size:v.XXXS,color:n.v2.colors.silver[200],children:"Include workload and pod manifests for instrumented sources"})]})]}),t(It,{alignX:Tt.Left,alignY:Dt.Bottom,items:i.map(e=>({id:e.name,label:e.name,withCheckbox:!0})),selectedIds:c.sourceWorkloadNamespaces,setSelectedIds:e=>d("sourceWorkloadNamespaces",e),withMultiSelect:!0,withSearch:!0,fullWidth:!0,buttonProps:{label:(c.sourceWorkloadNamespaces.length?"Selected":"Select")+" Namespaces",variant:P.Secondary,disabled:c.includeSourceWorkloads,leftIcon:c.sourceWorkloadNamespaces.length?()=>t(re,{label:c.sourceWorkloadNamespaces.length,status:Q.Default}):void 0}}),t(g,{$justifyContent:"flex-end",children:t(O,{label:"Download Diagnose",rightIcon:Qa,variant:P.Primary,onClick:async()=>{r(Date.now()),await a(c),r(null),u()},disabled:null!==s})})]})})},bl=({fetchDescribeOdigos:e})=>{const{platformType:a,version:o,tier:i}=ue(),[s,r]=l(null);return n(()=>{e().then(({data:e})=>r(e?.describeOdigos||null))},[]),t(xe,{richTitle:{icon:Za,title:"General Information"},children:t(Nt,{cellsPerRow:2,items:[{id:At(),title:"Odigos Version",label:o},{id:At(),title:`${a.toUpperCase()} Version`,label:s?.kubernetesVersion?.value||"-"},{id:At(),title:"Installation Method",label:s?.installationMethod?.value||"-"},{id:At(),title:"Tier",label:i}]})})},fl=({isOpen:a,onClose:n,token:o,updateToken:l,fetchDescribeOdigos:i,downloadDiagnose:s})=>e(ht,{isOpen:a,header:{icon:Za,title:"System Overview",onClose:n},children:[i&&t(bl,{fetchDescribeOdigos:i}),l&&o&&t(ml,{token:o,updateToken:l}),s&&t(gl,{downloadDiagnose:s})]});var vl,yl;!function(e){e.BulkConfig="bulk-config",e.BulkSource="bulk-source",e.BulkDestination="bulk-destination",e.BulkAction="bulk-action",e.BulkInstrumentationRule="bulk-instrumentation-rule",e.Delete="delete"}(vl||(vl={})),function(e){e.Id="id",e.Name="name",e.Type="type",e.Status="status",e.OdigosVersion="odigosVersion",e.ConnectedSince="connectedSince",e.LastActivity="lastActivity"}(yl||(yl={}));const Cl=[{key:yl.Name,label:"Name"},{key:yl.Type,label:"Type",textAlign:"right"},{key:yl.Status,label:"Status"},{key:yl.OdigosVersion,label:"Odigos Version"},{key:yl.ConnectedSince,label:"Connected Since"},{key:yl.LastActivity,label:"Last Activity"}],Sl=(e,t)=>{const a=e.find(e=>e.key===yl.Id)?.rawValue;return t(a?.toString()||"")},kl=e=>{const{connections:t,configMinSupportedVersion:a,snapshotMinSupportedVersion:n,onDelete:o,onAddSource:l,onAddDestination:i,onAddAction:s,onAddInstrumentationRule:r,onEditConfiguration:c}=e;return({cells:e})=>{if(!(e=>e.find(e=>e.key===yl.Status)?.rawValue===Q.Success)(e))return[{id:At(),label:"Delete Connection",rightIcon:$a,onClick:()=>Sl(e,o)}];const d=Sl(e,e=>{const n=t.find(t=>t.id===e);return!!n&&Et(n.odigosVersion,a)}),u=Sl(e,e=>{const a=t.find(t=>t.id===e);return!!a&&Et(a.odigosVersion,n)}),p=[];return l&&p.push({id:At(),tooltip:u?Fe.ADD_SOURCE:`To use this feature, please upgrade to Odigos v${n} or later.`,rightIcon:Xa,disabled:!u,onClick:()=>Sl(e,l)}),i&&p.push({id:At(),tooltip:Fe.ADD_DESTINATION,rightIcon:Va,onClick:()=>Sl(e,i)}),s&&p.push({id:At(),tooltip:Fe.ADD_ACTION,rightIcon:La,onClick:()=>Sl(e,s)}),r&&p.push({id:At(),tooltip:Fe.ADD_INSTRUMENTATION_RULE,rightIcon:ja,onClick:()=>Sl(e,r)}),c&&p.push({id:At(),tooltip:d?"Edit Configuration":`To use this feature, please upgrade to Odigos v${a} or later.`,rightIcon:Wa,disabled:!d,onClick:()=>Sl(e,c)}),p}},wl=({tableRowsMaxHeight:a,connections:o,getConnections:s,onClickConnection:r,deleteConnection:d,configMinSupportedVersion:u=0,getEffectiveConfig:p,applyConfigurations:h,snapshotMinSupportedVersion:g=0,getAllClusterSnapshots:b,persistSources:f,getDestinationCategories:v,getPotentialDestinations:y,testConnection:C,createDestination:S,updateDestination:k,createAction:w,createInstrumentationRule:I})=>{const D=m(),{isVm:T}=ue(),{formatTimeAgo:N}=kt(),[A,E]=l(!1),[x,R]=l(o||[]),O=i(async()=>{try{E(!0),R(await s()??[])}catch(e){}finally{E(!1)}},[]);n(()=>{x.length||O()},[]);const[F,M]=l(""),[L,V]=l(null),[B,_]=l([]),z=c(()=>L===vl.BulkConfig?u:L===vl.BulkSource?g:0,[L,u,g]),{supportedConnections:U,supportedConnectionIds:j}=c(()=>{const e=((e,t)=>e.filter(e=>{const a=e.status===Q.Success,n=Et(e.odigosVersion,t);return a&&n}))(x,z);return{supportedConnections:e,supportedConnectionIds:e.map(e=>e.id)}},[x.length,z]);n(()=>{if(!L||L===vl.Delete)return;const e=B.filter(e=>!j.includes(e));e.length&&_(t=>t.filter(t=>!e.includes(t)))},[L,B.length,j.length]);const X=c(()=>x.filter(e=>!F||e.name.toLowerCase().includes(F.toLowerCase())).map(e=>({cells:[{key:yl.Id,rawValue:e.id},{key:yl.Name,rawValue:e.name},{key:yl.Type,rawValue:e.type},{key:yl.Status,rawValue:e.status,component:()=>(e=>{const a=e===Q.Success?"Connection live":"Connection lost",n=e===Q.Success?za:Ua;return t(re,{status:e,label:a,leftIcon:n})})(e.status)},{key:yl.OdigosVersion,rawValue:e.odigosVersion},{key:yl.ConnectedSince,rawValue:e.connectedAt?N(e.connectedAt):"-"},{key:yl.LastActivity,rawValue:e.lastSeenAt?N(e.lastSeenAt):"-"}],onClick:e.status!==Q.Success||L?void 0:()=>r(e),isSelected:B.includes(e.id),onSelect:()=>_(t=>Array.from(new Set([...t,e.id]))),onDeselect:()=>_(t=>t.filter(t=>t!==e.id)),hideCheckbox:e.status!==Q.Success||L===vl.BulkConfig&&!Et(e.odigosVersion,u)||L===vl.BulkSource&&!Et(e.odigosVersion,g)})),[x,B,F,L,u,g]),H=c(()=>{const e=(e,t)=>{_([e]),V(t)};return kl({connections:x,configMinSupportedVersion:u,snapshotMinSupportedVersion:g,onDelete:t=>e(t,vl.Delete),onAddSource:!T&&b&&f?t=>e(t,vl.BulkSource):void 0,onAddDestination:!T&&v&&y&&S?t=>e(t,vl.BulkDestination):void 0,onAddAction:!T&&w?t=>e(t,vl.BulkAction):void 0,onAddInstrumentationRule:!T&&I?t=>e(t,vl.BulkInstrumentationRule):void 0,onEditConfiguration:!T&&p&&h?t=>e(t,vl.BulkConfig):void 0})},[T,x,u,p,h,g,b,f,v,y,S,w,I]),W=c(()=>(e=>{const{onCancel:t,onAddSource:a,onAddDestination:n,onAddAction:o,onAddInstrumentationRule:l,onManageConfigurations:i}=e,s=[];a&&s.push({id:At(),type:xt.Button,buttonProps:{variant:P.Primary,size:$.S,label:"Add Sources",rightIcon:Xa,onClick:a}});const r=[n?{id:vl.BulkDestination,label:Fe.ADD_DESTINATION,icon:Va}:null,o?{id:vl.BulkAction,label:Fe.ADD_ACTION,icon:La}:null,l?{id:vl.BulkInstrumentationRule,label:Fe.ADD_INSTRUMENTATION_RULE,icon:ja}:null,i?{id:vl.BulkConfig,label:"Manage Configurations",icon:Wa}:null];return r.some(Boolean)&&s.push({id:At(),type:xt.ButtonDropData,buttonProps:{variant:P.Secondary,size:$.S,label:"Bulk Operations",onClick:e=>{e===vl.BulkSource?a?.():e===vl.BulkDestination?n?.():e===vl.BulkAction?o?.():e===vl.BulkInstrumentationRule?l?.():e===vl.BulkConfig&&i?.()}},dropDataProps:{alignX:Tt.Left,items:r}}),s.push({id:At(),type:xt.Button,buttonProps:{variant:P.Text,size:$.S,label:Rt.CANCEL,onClick:t}}),s})({onCancel:()=>_([]),onAddSource:!T&&b&&f?()=>V(vl.BulkSource):void 0,onAddDestination:!T&&v&&y&&S?()=>V(vl.BulkDestination):void 0,onAddAction:!T&&w?()=>V(vl.BulkAction):void 0,onAddInstrumentationRule:!T&&I?()=>V(vl.BulkInstrumentationRule):void 0,onManageConfigurations:!T&&p&&h?()=>V(vl.BulkConfig):void 0}),[T,p,h,b,f,v,y,S,w,I]);return t(Ot,{children:e(xe,{richTitle:{icon:tn,title:Fe.CONNECTIONS,badge:{label:x.length.toString(),status:He.Unknown}},search:{placeholder:"Search by cluster name",value:F,onChange:e=>M(e),width:"300px"},actions:[{id:At(),type:xt.Button,buttonProps:{variant:P.Secondary,size:$.S,leftIcon:en,onClick:O,disabled:A}}],children:[t($t,{variant:Pt.Pretty,maxHeight:a,headerBackgroundColor:D.v2.colors.silver[1e3],isLoading:A,withCheckboxes:!0,columns:Cl,rows:X,rowActionsPushRightPosition:L?`calc(${wn} - 24px)`:void 0,getRowActions:H}),L===vl.BulkConfig&&p&&h&&t(qo,{onClose:()=>V(null),connections:U,selectedConnectionIds:B,setSelectedConnectionIds:_,getEffectiveConfig:p,onApply:h}),L===vl.BulkSource&&b&&f&&t(bo,{selectedConnectionIds:B,getAllClusterSnapshots:b,children:t(Go,{onClose:()=>V(null),selectedConnectionIds:B,setSelectedConnectionIds:_,persistSources:async e=>await(f?.(e))})}),L===vl.BulkDestination&&v&&y&&C&&S&&k&&t(Qn,{children:t(Mo,{onClose:()=>V(null),selectedConnectionIds:B,setSelectedConnectionIds:_,getDestinationCategories:v,getPotentialDestinations:y,testConnection:e=>C(e,B),createDestination:e=>S(e,B),updateDestination:(e,t)=>k(e,t,B)})}),L===vl.BulkAction&&w&&t(Hn,{children:t(Io,{onClose:()=>V(null),selectedConnectionIds:B,setSelectedConnectionIds:_,createAction:e=>w(e,B)})}),L===vl.BulkInstrumentationRule&&I&&t(po,{children:t(Lo,{onClose:()=>V(null),selectedConnectionIds:B,setSelectedConnectionIds:_,createInstrumentationRule:e=>I(e,B)})}),t(In,{target:"connection",isOpen:L===vl.Delete,onClose:()=>{_([]),V(null)},onApprove:async()=>{const e=B[0];e&&(await d(e),await O())}}),t(Ft,{isOpen:!!B.length&&!L,richTitle:{icon:Ra,title:"Selected Clusters",badge:{label:B.length}},actions:W})]})})},Il=p.div`
|
|
247
100
|
display: flex;
|
|
248
101
|
align-items: center;
|
|
249
102
|
justify-content: space-between;
|
|
@@ -252,26 +105,26 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
252
105
|
width: calc(100% - 32px);
|
|
253
106
|
border-radius: 16px;
|
|
254
107
|
background-color: ${({theme:e})=>e.v2.colors.silver[800]};
|
|
255
|
-
`,
|
|
108
|
+
`,Dl=p.div`
|
|
256
109
|
display: flex;
|
|
257
110
|
align-items: center;
|
|
258
111
|
justify-content: center;
|
|
259
112
|
padding: 8px;
|
|
260
113
|
border-radius: 8px;
|
|
261
114
|
background-color: ${({theme:e})=>e.v2.colors.white[500]+y["004"]};
|
|
262
|
-
`,
|
|
115
|
+
`,Tl=({setStep:a,onSave:n,sourcesPayload:o,destinationsPayload:l,disableAnimation:i})=>{const s=m(),r=()=>a(2),d=()=>a(3),u=c(()=>Object.values(o||{}).flatMap((a,n)=>a.map((a,o)=>{if(!a.selected)return null;const l=a.kind||ve.Namespace,i=l===ve.Namespace?a.namespace:`${a.namespace} → ${a.name}`;return e(Il,{children:[t(f,{nowrap:!0,children:i}),t(re,{label:l,status:Q.Info,backgroundColor:s.v2.colors.blue[900]})]},`source-${n}-${o}`)})).filter(Boolean),[o]),p=c(()=>l?.map((a,n)=>{const o=_e(a.option.type).icon;return e(Il,{children:[e(g,{$gap:8,children:[o&&t(Dl,{children:t(o,{size:24})}),t(f,{nowrap:!0,children:a.formData.name||a.option.displayName})]}),void 0!==a.testResult&&t(re,{status:a.testResult.succeeded?Q.Success:Q.Error,leftIcon:a.testResult.succeeded?za:Ua})]},`destination-${n}`)})||[],[l]);return t(kn,{isOpen:!0,disableAnimation:i,onBack:()=>a(3),onSave:n,header:{icon:an,title:Fe.SUMMARY,subTitle:Fe.REVIEW_SETUP},leftColumn:{width:"50%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(Xa,{size:24}),t(f,{nowrap:!0,children:Fe.SELECTED_SOURCES}),t(re,{label:u.length})]}),t(O,{"data-id":"summary-edit-sources",leftIcon:Pa,variant:P.Secondary,size:$.S,onClick:r})]}),list:u.length?u:[t(Pe,{$height:"100%",children:t(B,{icon:Xa,title:Fe.NO_SOURCES_SELECTED,subTitle:Fe.ADD_SOURCE_PROMPT,button:{leftIcon:Ea,label:Fe.ADD_SOURCE,onClick:r}})},"no-sources-data")]},rightColumn:{width:"50%",header:e(g,{$width:"100%",$gap:12,$justifyContent:"space-between",children:[e(g,{$gap:8,children:[t(Va,{size:24}),t(f,{nowrap:!0,children:Fe.SELECTED_DESTINATIONS}),t(re,{label:p.length})]}),t(O,{"data-id":"summary-edit-destinations",leftIcon:Pa,variant:P.Secondary,size:$.S,onClick:d})]}),list:p.length?p:[t(Pe,{"data-id":"summary-no-destinations",$height:"100%",children:t(B,{icon:Va,title:Fe.NO_DESTINATIONS_SELECTED,subTitle:Fe.ADD_DESTINATION_PROMPT,button:{leftIcon:Ea,label:Fe.ADD_DESTINATIONS,onClick:d}})},"no-destinations-data")]}})},Nl=p.div`
|
|
263
116
|
position: relative;
|
|
264
117
|
overflow: hidden;
|
|
265
118
|
width: calc(100vw - ${({$paddingXAxis:e})=>e});
|
|
266
119
|
height: calc(100vh - ${({$paddingYAxis:e})=>e});
|
|
267
120
|
box-sizing: border-box;
|
|
268
|
-
`,
|
|
121
|
+
`,Al=p.svg`
|
|
269
122
|
position: absolute;
|
|
270
123
|
top: 50%;
|
|
271
124
|
left: 50%;
|
|
272
125
|
transform: translate(-50%, -50%);
|
|
273
126
|
z-index: -1;
|
|
274
|
-
`,
|
|
127
|
+
`,El=[{opacity:"0.1"},{offset:"0.31",opacity:"0.11"},{offset:"0.45",opacity:"0.14"},{offset:"0.56",opacity:"0.19"},{offset:"0.65",opacity:"0.26"},{offset:"0.73",opacity:"0.35"},{offset:"0.8",opacity:"0.46"},{offset:"0.86",opacity:"0.6"},{offset:"0.92",opacity:"0.76"},{offset:"0.98",opacity:"0.93"},{offset:"1"}],xl=[{width:1440,height:900,pathOpacity:.1,path:"M719.992 1169.99C322.351 1169.99 0 847.64 0 450C0 52.3591 322.351 -269.992 719.992 -269.992C1117.63 -269.992 1439.98 52.3591 1439.98 450C1439.98 847.64 1117.63 1169.99 719.992 1169.99Z",gradientTransform:"translate(814.309 444.011) rotate(180) scale(718.904)",stops:[{opacity:"0.1"},{offset:"0.41",opacity:"0.11"},{offset:"0.56",opacity:"0.13"},{offset:"0.67",opacity:"0.18"},{offset:"0.75",opacity:"0.25"},{offset:"0.83",opacity:"0.33"},{offset:"0.89",opacity:"0.44"},{offset:"0.95",opacity:"0.56"},{offset:"1",opacity:"0.7"}]},{width:1343,height:900,pathOpacity:.3,path:"M671.344 1121.34C300.571 1121.34 0 820.773 0 450C0 79.2264 300.571 -221.345 671.344 -221.345C1042.12 -221.345 1342.69 79.2264 1342.69 450C1342.69 820.773 1042.12 1121.34 671.344 1121.34Z",gradientTransform:"translate(644.026 441.551) rotate(180) scale(581.31)",stops:El},{width:1163,height:900,pathOpacity:.5,path:"M581.31 1031.31C260.261 1031.31 0 771.048 0 449.999C0 128.951 260.261 -131.311 581.31 -131.311C902.358 -131.311 1162.62 128.951 1162.62 449.999C1162.62 771.048 902.358 1031.31 581.31 1031.31Z",gradientTransform:"translate(644.026 441.551) rotate(180) scale(581.31)",stops:El},{width:798,height:798,pathOpacity:.7,path:"M398.581 797.162C178.451 797.162 0 618.711 0 398.581C0 178.451 178.451 0 398.581 0C618.711 0 797.162 178.451 797.162 398.581C797.162 618.711 618.711 797.162 398.581 797.162Z",gradientTransform:"translate(445.003 392.441) rotate(180) scale(398.23)",stops:El}],Rl=({paddingXAxis:a="0px",paddingYAxis:o="0px",children:i})=>{const[s,r]=l(window.innerWidth),d=c(()=>s/xl[0].width,[s]);return n(()=>{const e=()=>r(window.innerWidth);return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]),e(Nl,{$paddingXAxis:a,$paddingYAxis:o,children:[xl.map(({width:a,height:n,pathOpacity:o,path:l,gradientTransform:i,stops:s},r)=>{const c=`purple-ring-${r}`;return e(Al,{width:a*d,height:"100%",viewBox:`0 0 ${a} ${n}`,fill:"none",children:[t("path",{opacity:o,d:l,fill:`url(#${c})`}),t("defs",{children:t("radialGradient",{id:c,cx:"0",cy:"0",r:"1",gradientUnits:"userSpaceOnUse",gradientTransform:i,children:s.map(({offset:e,opacity:a},n)=>t("stop",{offset:e,stopColor:"#7C3BFF",stopOpacity:a},n))})})]},c)}),i]})},Ol=p.div`
|
|
275
128
|
display: flex;
|
|
276
129
|
flex-direction: column;
|
|
277
130
|
align-items: center;
|
|
@@ -282,7 +135,7 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
282
135
|
width: 50vw;
|
|
283
136
|
border-radius: 16px;
|
|
284
137
|
background: ${({theme:e})=>e.v2.colors.silver[900]};
|
|
285
|
-
|
|
138
|
+
`,$l=p.div`
|
|
286
139
|
display: flex;
|
|
287
140
|
flex-direction: column;
|
|
288
141
|
align-items: center;
|
|
@@ -292,12 +145,12 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
292
145
|
& * {
|
|
293
146
|
text-align: center;
|
|
294
147
|
}
|
|
295
|
-
`,
|
|
148
|
+
`,Pl=({onStart:a})=>t(ht,{width:"75vw",isOpen:!0,hideOverlay:!0,disableAnimation:!0,children:t(Pe,{$height:"100%",children:e(Ol,{children:[e($l,{children:[t(f,{size:v.L,weight:500,children:Fe.GET_STARTED_WITH}),t(Dn,{size:260}),t(f,{size:v.S,weight:400,children:Fe.GET_STARTED_DESCRIPTION})]}),t(O,{"data-id":"onboarding-get-started",label:Rt.GET_STARTED,rightIcon:nn,size:$.L,onClick:a})]})})}),Fl=[{step:1,label:Fe.INSTALLATION,forceDoneBadge:!0},{step:2,label:Fe.SOURCES_SETUP},{step:3,label:Fe.DESTINATIONS_SETUP},{step:4,label:Fe.SUMMARY}],Ml=p.div`
|
|
296
149
|
display: flex;
|
|
297
150
|
flex-direction: column;
|
|
298
151
|
gap: 32px;
|
|
299
152
|
padding: 64px;
|
|
300
|
-
`,
|
|
153
|
+
`,Ll=({pagePaddingXAxis:a,pagePaddingYAxis:n,fetchNamespacesWithWorkloads:o,persistSources:i,getDestinationCategories:s,getPotentialDestinations:r,testConnection:c,createDestination:d,updateDestination:u,onDone:p})=>{const[m,h]=l(1),[g,b]=l(!1),[f,v]=l(null),[y,C]=l(null),S=()=>h(e=>e+1),k=()=>h(e=>e-1);return e(Rl,{paddingXAxis:a,paddingYAxis:n,children:[e(Ml,{children:[t(Dn,{}),t(Mt,{currentStep:m,data:Fl,gap:32})]}),t(bo,{fetchNamespacesWithWorkloads:o,initialInputs:f,children:e(Qn,{children:[1===m&&t(Pl,{onStart:S}),2===m&&t(Go,{disableAnimation:!0,onBack:e=>{v(e),k()},onNext:e=>{v(e),S()},persistSources:i}),3===m&&t(Mo,{disableAnimation:!0,onBack:e=>{C(e),k()},onNext:e=>{C(e),S()},getDestinationCategories:s,getPotentialDestinations:r,initialInputs:y,testConnection:c,createDestination:d,updateDestination:u}),4===m&&t(Tl,{disableAnimation:!0,setStep:h,onSave:async()=>{if(!g){b(!0);try{const e=[];f&&e.push(i(f)),y&&e.push(...y.map(e=>d(e.formData)));const t=await Promise.allSettled(e),a=[];for(const e of t)"rejected"===e.status?a.push(e.reason?.message||String(e.reason)):e.value?.error&&a.push(e.value.error);if(a.length)return{error:a.join("\n")};p()}catch(e){return b(!1),{error:e instanceof Error?e.message:String(e)}}}},sourcesPayload:f,destinationsPayload:y})]})})]})},Vl=p.div`
|
|
301
154
|
display: flex;
|
|
302
155
|
align-items: center;
|
|
303
156
|
justify-content: space-between;
|
|
@@ -309,13 +162,13 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
309
162
|
&:hover {
|
|
310
163
|
background: ${({theme:e})=>e.v2.colors.silver[700]};
|
|
311
164
|
}
|
|
312
|
-
`,
|
|
313
|
-
animation-name: ${
|
|
314
|
-
`,
|
|
165
|
+
`,Bl=p.div`
|
|
166
|
+
animation-name: ${_t.in};
|
|
167
|
+
`,_l=({pod:o,getExtendedPodInfo:i,onClose:s})=>{const{formatTimeAgo:r}=kt(),[d,u]=l(null),[p,m]=l(!1);n(()=>{o?i(o.namespace,o.name).then(e=>u(e??null)):(u(null),m(!1))},[o]);const g=c(()=>[{id:At(),title:"Node",label:d?.node??"-",withCopy:!0},{id:At(),title:"Status",badge:{status:Lt(d?.status),label:d?.status??"-"}}],[d]),b=c(()=>d?.containers?.map(e=>({id:At(),items:[{id:At(),title:"Container",label:e.name??"-"},{id:At(),title:"Status",label:e.startedAt?`${e.status} (since ${r(e.startedAt)})`:e.status},{id:At(),title:"Ready",badge:{status:e.ready?Q.Success:Q.Error,leftIcon:e.ready?Ra:Oa,label:e.ready?"True":"False",invertColors:!0}},{id:At(),title:"Started",badge:{status:e.started?Q.Success:Q.Error,leftIcon:e.started?Ra:Oa,label:e.started?"True":"False",invertColors:!0}},{id:At(),title:"Image Version",label:e.image?.split(":")?.[1]??"-"},{id:At(),title:"Image Repository",label:e.image?.split(":")?.[0]??"-"},{id:At(),title:"Restarts",label:e.restarts.toString()},{id:At(),title:"State Reason",label:e.stateReason??"-"},{id:At(),title:"Resource Requests",label:`CPU ${e.resources.requests.cpu} • Memory ${e.resources.requests.memory}`},{id:At(),title:"Resource Limits",label:`CPU ${e.resources.limits.cpu} • Memory ${e.resources.limits.memory}`}]}))||[],[d]);return e(ht,{isOpen:!!o,header:{icon:on,title:"Pod Information",onClose:s},children:[d?null:t(Pe,{children:t(Vt,{})}),d?e(a,{children:[t(xe,{richTitle:{icon:on,title:d.name,withCopy:!0},children:e(h,{$gap:24,children:[t(Nt,{cellsPerRow:2,items:g}),b.length>0&&e(h,{$gap:12,children:[e(Vl,{onClick:()=>m(e=>!e),children:[t(f,{children:"Containers Overview"}),t(Me,{icon:p?Ba:_a})]}),p&&b.map(({id:e,items:a})=>t(Bl,{children:t(Nt,{cellsPerRow:2,items:a})},e))]})]})}),t(xe,{richTitle:{icon:Za,title:"Kubectl Commands"},children:e(h,{$gap:12,children:[t(Bt,{value:`kubectl get pod ${d.name} -n ${d.namespace} -o yaml`}),t(Bt,{value:`kubectl describe pod ${d.name} -n ${d.namespace}`}),t(Bt,{value:`kubectl logs ${d.name} -n ${d.namespace}`})]})}),t(Nn,{yaml:d.manifestYAML,defaultOpen:!0})]}):null]})};var zl;!function(e){e.PodName="podName",e.Status="status",e.Restarts="restarts",e.NodeName="nodeName",e.SpanDropDrate="spanDropDrate",e.Age="age",e.DockerImage="dockerImage"}(zl||(zl={}));const Ul=[{key:zl.PodName,label:"Pod Name"},{key:zl.Status,label:"Status"},{key:zl.Restarts,label:"Restarts",textAlign:"right"},{key:zl.NodeName,label:"Node Name"},{key:zl.Age,label:"Age",textAlign:"right"},{key:zl.DockerImage,label:"Docker Image",textAlign:"right"}],jl=({isLoading:a,tableRowsMaxHeight:n,pods:o,getExtendedPodInfo:i})=>{const s=m(),{formatTimeAgo:r}=kt(),[d,u]=l(null),p=c(()=>o.map(a=>({onClick:()=>u(a),cells:[{key:zl.PodName,rawValue:a.name},{key:zl.Status,rawValue:a.status,component:()=>{return e=a.status,t(re,{status:Lt(e),label:e});var e}},{key:zl.Restarts,rawValue:a.restartsCount.toString()},{key:zl.NodeName,rawValue:a.nodeName},{key:zl.SpanDropDrate,rawValue:0,component:()=>{const{collectorMetrics:n}=a;if(!n)return t(f,{children:"-"});const o=(n?.metricsAcceptedRps??0)+(n?.metricsDroppedRps??0),l=o>0?Math.round((n?.metricsDroppedRps??0)/o*100):0,i=l>0?Q.Error:Q.Success,s=(n?.exporterSuccessRps??0)+(n?.exporterFailedRps??0),r=s>0?Math.round((n?.exporterFailedRps??0)/s*100):0,c=r>0?Q.Error:Q.Success;return e(g,{$gap:4,children:[t(te,{text:`Accepted: ${n.metricsAcceptedRps.toLocaleString()}, Dropped: ${n.metricsDroppedRps.toLocaleString()}`,children:t(re,{status:i,label:`Receiver ${l}%`,leftIcon:i===Q.Error?ln:sn,useSecondaryTone:!0,invertColors:!0})}),t(te,{text:`Success: ${n.exporterSuccessRps.toLocaleString()}, Failed: ${n.exporterFailedRps.toLocaleString()}`,children:t(re,{status:c,label:`Exporter ${r}%`,leftIcon:c===Q.Error?ln:sn,useSecondaryTone:!0,invertColors:!0})})]})}},{key:zl.Age,rawValue:r(a.creationTimestamp)},{key:zl.DockerImage,rawValue:a.image}]})),[o,s]);return e(xe,{richTitle:{icon:on,title:"Pods"},children:[t($t,{variant:Pt.Data,maxHeight:n,isLoading:a,columns:Ul,rows:p}),t(_l,{pod:d,getExtendedPodInfo:i,onClose:()=>u(null)})]})};var Xl;!function(e){e.Gateway="gateway",e.Node="node"}(Xl||(Xl={}));const Hl=[{value:Xl.Gateway,label:"Gateway"},{value:Xl.Node,label:"Node Collector"}],Wl=p.div`
|
|
315
168
|
display: flex;
|
|
316
169
|
align-items: center;
|
|
317
170
|
justify-content: space-between;
|
|
318
|
-
`,
|
|
171
|
+
`,Gl=({selectedTab:a,setSelectedTab:n,onClickDownloadDiagnose:o,onClickRefresh:l,loading:i,disabled:s})=>{const r=c(()=>{const e=[];return o&&e.push({id:At(),type:xt.Button,buttonProps:{label:"Download Diagnose",leftIcon:Qa,size:$.S,variant:P.Text,onClick:o,disabled:s}}),l&&e.push({id:At(),type:xt.Button,buttonProps:{label:"Refresh",leftIcon:en,size:$.S,variant:P.Text,onClick:l,disabled:s,loading:i}}),e},[o,l,s,i]);return e(Wl,{children:[e(g,{$gap:12,$alignItems:"center",children:[t(zt,{icon:rn,title:"Pipeline Collectors"}),t(z,{options:Hl,selected:a,setSelected:n,disabled:s})]}),t(Ut,{actions:r})]})},ql=({isOpen:e,onClose:a,title:n,yaml:o})=>t(ht,{isOpen:e,header:{icon:cn,title:n,onClose:a},children:t(Nn,{yaml:o,defaultOpen:!0})});var Kl;!function(e){e.ManifestYaml="manifest-yaml",e.ConfigMapYaml="configmap-yaml"}(Kl||(Kl={}));const Yl=({richTitle:a,statusCard:n,textCards:o,manifestYaml:i,configMapYaml:s})=>{const[r,c]=l(null);return e(xe,{richTitle:a,actions:[{id:At(),type:xt.ButtonDropData,buttonProps:{variant:P.Secondary,size:$.S,label:"View YAML",onClick:e=>c(e)},dropDataProps:{items:[{id:Kl.ManifestYaml,label:a?.title??"",icon:dn},{id:Kl.ConfigMapYaml,label:"ConfigMap",icon:dn}]}}],children:[e(g,{$gap:16,children:[t(jt,{...n}),o.map(e=>t(Xt,{...e},e.title))]}),t(ql,{isOpen:r===Kl.ManifestYaml,onClose:()=>c(null),title:a?.title??"",yaml:i}),t(ql,{isOpen:r===Kl.ConfigMapYaml,onClose:()=>c(null),title:"ConfigMap",yaml:s})]})},Jl=e=>{switch(e){case Ht.Healthy:return"All desired replicas are updated, available, and ready";case Ht.Updating:return"Workload is progressing towards desired state (e.g., updating pods)";case Ht.Degraded:return"Progressing but with availability issues (e.g., not enough available replicas)";case Ht.Failed:return"Progress deadline exceeded or an unrecoverable error occurred";case Ht.Down:return"No available replicas";case Ht.Unknown:return"Status cannot be determined from current signals";default:return"Status unknown"}},Ql=({minSupportedVersion:a=0,tableRowsMaxHeight:o,getGatewayInfo:s,getGatewayPods:r,getNodeCollectorInfo:d,getNodeCollectorPods:u,getExtendedPodInfo:p})=>{const{formatTimeAgo:m}=kt(),{isVersionSupported:h,version:g}=ue(a),[b,f]=l(!1),[v,y]=l(Xl.Gateway),[C,S]=l(null),[k,w]=l([]),[I,D]=l(null),[T,N]=l([]),A=i(async()=>{f(!0);try{switch(v){case Xl.Gateway:S(await s()??null),w(await r()??[]);break;case Xl.Node:D(await d()??null),N(await u()??[])}}catch(e){}f(!1)},[v]);n(()=>{A()},[A]);const E=c(()=>(e=>{switch(e){case Xl.Gateway:return"Deployment";case Xl.Node:return"DaemonSet";default:return"Pipeline Collectors"}})(v),[v]),x=c(()=>((e,t,a,n)=>{const o={status:He.Disabled,label:"No rollouts yet"};let l=!1,i=null;switch(e){case Xl.Gateway:l=t?.rolloutInProgress??!1,i=t?.lastRolloutAt??null;break;case Xl.Node:l=a?.rolloutInProgress??!1,i=a?.lastRolloutAt??null;break;default:return o}return l?{status:Q.Info,label:"Rollout in progress",rightIcon:en,useSecondaryTone:!0}:i?{status:He.Disabled,label:`Last Rollout: ${n(i)}`}:o})(v,C,I,m),[C,I,v,m]),R=c(()=>((e,t,a,n)=>{let o=n?Q.Info:He.Unknown,l=n?"Loading":Ht.Unknown,i=n?"Fetching data...":Jl(Ht.Unknown);switch(e){case Xl.Gateway:o=t?.status?Lt(t?.status):o,l=t?.status??l,i=t?.status?Jl(t.status):i;break;case Xl.Node:o=a?.status?Lt(a?.status):o,l=a?.status??l,i=a?.status?Jl(a.status):i}return{status:o,title:l,description:i}})(v,C,I,b),[C,I,v,b]),O=c(()=>((e,t,a,n)=>{switch(e){case Xl.Gateway:return[{title:"HPA Spec (Replicas)",cells:[{label:"Min.",value:t?.hpa?.min.toString()??"-",isLoading:n},{label:"Max.",value:t?.hpa?.max.toString()??"-",isLoading:n},{label:"Current",value:t?.hpa?.current.toString()??"-",isLoading:n},{label:"Desired",value:t?.hpa?.desired.toString()??"-",isLoading:n}]},{title:"Requests",cells:[{label:"CPU",value:t?.resources?.requests.cpu??"-",isLoading:n},{label:"Memory",value:t?.resources?.requests.memory??"-",isLoading:n}]},{title:"Limits",cells:[{label:"CPU",value:t?.resources?.limits.cpu??"-",isLoading:n},{label:"Memory",value:t?.resources?.limits.memory??"-",isLoading:n}]},{title:"Docker Image",cells:[{value:t?.imageVersion??"-",isLoading:n}]}];case Xl.Node:return[{title:"Nodes",cells:[{label:"Desired",value:a?.nodes?.desired.toString()??"-",isLoading:n},{label:"Ready",value:a?.nodes?.ready.toString()??"-",isLoading:n}]},{title:"Requests",cells:[{label:"CPU",value:a?.resources?.requests.cpu??"-",isLoading:n},{label:"Memory",value:a?.resources?.requests.memory??"-",isLoading:n}]},{title:"Limits",cells:[{label:"CPU",value:a?.resources?.limits.cpu??"-",isLoading:n},{label:"Memory",value:a?.resources?.limits.memory??"-",isLoading:n}]},{title:"Docker Image",cells:[{value:a?.imageVersion??"-",isLoading:n}]}];default:return[]}})(v,C,I,b),[C,I,v,b]),$=c(()=>(v===Xl.Gateway?C?.manifestYAML:I?.manifestYAML)??"",[C,I,v]),P=c(()=>(v===Xl.Gateway?C?.configMapYAML:I?.configMapYAML)??"",[C,I,v]),F=c(()=>v===Xl.Gateway?k:T,[k,T,v]);return e(Ot,{children:[t(Gl,{disabled:!h,loading:b,selectedTab:v,setSelectedTab:y,onClickDownloadDiagnose:void 0,onClickRefresh:A}),e(Wt,{children:[t(Yl,{richTitle:{icon:cn,title:E,badge:x},statusCard:R,textCards:O,manifestYaml:$,configMapYaml:P}),t(jl,{isLoading:b,tableRowsMaxHeight:o,pods:F,getExtendedPodInfo:p}),!h&&t(Tn,{minSupportedVersion:a,currentVersion:g||""})]})]})},Zl=p.div`
|
|
319
172
|
display: inline-flex;
|
|
320
173
|
align-items: center;
|
|
321
174
|
padding: 4px 8px;
|
|
@@ -325,7 +178,7 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
325
178
|
overflow: hidden;
|
|
326
179
|
white-space: pre;
|
|
327
180
|
text-overflow: ellipsis;
|
|
328
|
-
`,
|
|
181
|
+
`,ei=p.div`
|
|
329
182
|
display: inline-flex;
|
|
330
183
|
align-items: center;
|
|
331
184
|
gap: 24px;
|
|
@@ -335,14 +188,24 @@ import{jsxs as e,jsx as t,Fragment as a}from"react/jsx-runtime";import{useEffect
|
|
|
335
188
|
overflow: hidden;
|
|
336
189
|
white-space: pre;
|
|
337
190
|
text-overflow: ellipsis;
|
|
338
|
-
`,
|
|
191
|
+
`,ti=p(g)`
|
|
339
192
|
flex-shrink: 0;
|
|
340
193
|
gap: 6px;
|
|
341
194
|
align-items: center;
|
|
342
195
|
min-height: 22px;
|
|
343
|
-
`;const Ns=[{key:"name",label:"Name",noSort:!0,noFilter:!0,flex:"0 0 156px",withTooltip:!0},{key:"summary",label:"Summary",noSort:!0,noFilter:!0},{key:"badges",label:"Type",noSort:!0,noFilter:!0,flex:"0 0 128px"}],As=[{value:"all",label:za},{value:"Relevance",label:"Relevance"},{value:"Duration",label:"Duration"},{value:"Error",label:"Error"}],Is=({title:a,items:n,isLoading:o,showTypeFilter:i,tableRowsMaxHeight:s,onRuleClick:d,onCreateRule:u,onEditRule:p,onDeleteRule:h})=>{const g=m(),[f,y]=l(""),[S,C]=l("all"),k=c(()=>{let e=function(e,t,a){return a&&"all"!==t?e.filter(e=>e.typeBadge===t):e}(n,S,i);return e=function(e,t){if(!t.trim())return e;const a=t.toLowerCase();return e.filter(e=>{const t=e.name?.toLowerCase().includes(a),n=e.summary.map(e=>e.text).join("").toLowerCase();return t||n.includes(a)})}(e,f),e},[n,S,i,f]),w=c(()=>k.map(a=>{const n=a.typeBadge?function(e,t){const a=e.v2.colors;switch(t){case"Relevance":return{bg:a.blue[700],text:a.white[500]};case"Duration":return{bg:a.purple[700],text:a.white[500]};case"Error":return{bg:a.red[500],text:a.black[500]}}}(g,a.typeBadge):void 0;return{cells:[{key:"name",rawValue:a.name||"",component:()=>t(xs,{$disabled:a.disabled,children:a.name&&t(v,{size:b.XXS,color:g.v2.colors.white[500],nowrap:!0,children:a.name})})},{key:"summary",rawValue:a.summary.map(e=>e.text).join(""),component:()=>t(xs,{$disabled:a.disabled,children:t(Ts,{children:t(zn,{parts:a.summary})})})},{key:"badges",rawValue:a.typeBadge||"",component:()=>e(Ds,{children:[a.disabled&&t(se,{label:La,textSize:b.XXXS,backgroundColor:g.v2.colors.grey[700],textColor:g.v2.colors.grey[300]}),a.typeBadge&&n&&t(se,{label:a.typeBadge,textSize:b.XXXS,backgroundColor:n.bg,textColor:n.text})]})}],onClick:()=>d(a)}}),[k,g,d]),T=c(()=>{const e=e=>t(on,{...e,fill:g.v2.colors.red[500]});return e.displayName="RedDeleteIcon",e},[g]),x=r(e=>{const t=w.indexOf(e);if(t<0)return[];const a=k[t];return a?[{id:"edit","data-id":"sampling-rule-action-edit",label:fa,leftIcon:ln,onClick:()=>p(a.ruleId,a.samplingId)},{id:"delete","data-id":"sampling-rule-action-delete",label:"",leftIcon:T,onClick:()=>h(a.ruleId,a.samplingId)}]:[]},[w,k,p,h,T]);return t(ye,{fullHeight:!0,richTitle:{icon:vn,title:a,badge:{label:n.length,backgroundColor:g.v2.colors.silver[600],textColor:g.v2.colors.white[500]}},search:{"data-id":"sampling-search-rules",value:f,onChange:y,placeholder:"Search..",width:"500px",...i?{segment:{"data-id":"sampling-segment-type-filter",options:As,selected:S,setSelected:C}}:{}},children:t(wa,{variant:Ta.Pretty,hideHeader:!0,maxHeight:s,isLoading:o,noDataProps:{hideIcon:!0,title:"No Rules Exist",button:{label:"Create your first rule",onClick:u}},columns:Ns,rows:w,getRowActions:x})})};function Es(e){if(!e.sourceScopes.length)return null;const t=[];for(const a of e.sourceScopes)if("source"===a.scopeType&&a.workloadName){const e={workloadName:a.workloadName};a.workloadKind&&(e.workloadKind=a.workloadKind),a.workloadNamespace&&(e.workloadNamespace=a.workloadNamespace),t.push(e)}else"namespace"===a.scopeType&&a.workloadNamespace?t.push({workloadNamespace:a.workloadNamespace}):"language"===a.scopeType&&a.workloadLanguage&&t.push({workloadLanguage:a.workloadLanguage});return t.length?t:null}function Rs(e){if("all"===e.percentageMode)return null;if("custom"===e.percentagePreset){const t=parseFloat(e.customPercentage);return isNaN(t)?null:t}return parseFloat(e.percentagePreset)}function Ps(e){if("custom"===e.durationPreset){const t=parseFloat(e.customDurationMs);return isNaN(t)?null:t}return parseInt(e.durationPreset,10)}function $s(e){return"all"===e.operationType?null:"httpServer"===e.operationType?{httpServer:{[e.routeType]:e.route||null,method:e.method||null}}:"httpClient"===e.operationType?{httpClient:{serverAddress:e.serverAddress||null,["route"===e.routeType?"templatedPath":"templatedPathPrefix"]:e.route||null,method:e.method||null}}:null}function Os(e){return"all"===e.operationType?null:"httpServer"===e.operationType?{httpServer:{[e.routeType]:e.route||null,method:e.method||null}}:"kafkaConsumer"===e.operationType?{kafkaConsumer:{kafkaTopic:e.kafkaTopic||null}}:"kafkaProducer"===e.operationType?{kafkaProducer:{kafkaTopic:e.kafkaTopic||null}}:null}function Ms(e){return{name:e.name||null,disabled:e.disabled,sourceScopes:Es(e),operation:$s(e),percentageAtMost:Rs(e),notes:e.notes||null}}function Fs(e){return{name:e.name||null,disabled:e.disabled,sourceScopes:Es(e),error:"Error"===e.ruleType,durationAtLeastMs:"Duration"===e.ruleType?Ps(e):null,operation:Os(e),percentageAtLeast:Rs(e),notes:e.notes||null}}function Ls(e){const t=Rs(e);return{name:e.name||null,disabled:e.disabled,sourceScopes:Es(e),operation:Os(e),percentageAtMost:t??0,notes:e.notes||null}}const zs=a=>{const{workloads:o,samplingRules:i,k8sHealthProbesConfig:s,loading:u,tableRowsMaxHeight:p,fetchSamplingRules:m,createNoisyOperationRule:f,updateNoisyOperationRule:v,createHighlyRelevantOperationRule:b,updateHighlyRelevantOperationRule:y,createCostReductionRule:S,updateCostReductionRule:C,deleteSamplingRule:k,updateK8sHealthProbesConfig:w}=a,T=c(()=>o.map(({id:e})=>({id:`${e.namespace}/${e.kind}/${e.name}`,label:`${e.namespace} / ${e.kind} / ${e.name}`})),[o]),x=c(()=>Array.from(new Set(o.map(({id:e})=>e.namespace))).sort().map(e=>({id:e,label:e})),[o]),[D,N]=l(Dl.Noisy),[A,I]=l(null),[E,R]=l(!1),[M,F]=l(!1),[L,z]=l(null),[V,X]=l(!1),[_,U]=l(!1),[j,H]=l(!1),W=c(()=>Hl(s),[s]),K=c(()=>function(e){for(const t of e){const e=t.highlyRelevantOperations.find(Wl);if(e)return{rule:e,samplingId:t.id}}return null}(i),[i]),G=c(()=>Kl(K?.rule??null),[K]),q=c(()=>function(e){for(const t of e){const e=t.costReductionRules.find(Gl);if(e)return{rule:e,samplingId:t.id}}return null}(i),[i]),Y=c(()=>ql(q?.rule??null),[q]),Z=d(A);Z.current=A,n(()=>{const e=Z.current;if(!e)return;const t=function(e,t){const a=Vl(e,t.samplingId,t.rule.ruleId,t.category);return a?{...a,summary:zl(a.category,a.rule)}:null}(i,e);t?I(t):(I(null),R(!1))},[i]);const ee=c(()=>{const e=new Set;return K&&e.add(K.rule.ruleId),q&&e.add(q.rule.ruleId),e},[K,q]),te=c(()=>function(e,t,a){const n=El[t],o=[];for(const l of e)switch(t){case Dl.Noisy:for(const e of l.noisyOperations)a?.has(e.ruleId)||o.push({ruleId:e.ruleId,samplingId:l.id,name:e.name??null,disabled:e.disabled,notes:e.notes??null,summary:Ol(e),category:n});break;case Dl.HighlyRelevant:for(const e of l.highlyRelevantOperations)a?.has(e.ruleId)||o.push({ruleId:e.ruleId,samplingId:l.id,name:e.name??null,disabled:e.disabled,notes:e.notes??null,summary:Ml(e),category:n,typeBadge:Ll(e)});break;case Dl.CostReduction:for(const e of l.costReductionRules)a?.has(e.ruleId)||o.push({ruleId:e.ruleId,samplingId:l.id,name:e.name??null,disabled:e.disabled,notes:e.notes??null,summary:Fl(e),category:n})}return o}(i,D,ee),[i,D,ee]),ae=r(()=>F(!0),[]),ne=r(()=>F(!1),[]),oe=r(e=>{const t=i[0]?.id??"default";switch(El[D]){case"noisy":f(t,Ms(e));break;case"highlyRelevant":b(t,Fs(e));break;case"costReduction":S(t,Ls(e))}F(!1)},[i,D,f,b,S]),le=r(e=>{const t=function(e,t){const a=Vl(e,t.samplingId,t.ruleId,t.category);return a?{...a,summary:t.summary}:null}(i,e);t&&(R(!1),I(t))},[i]),re=r(()=>{I(null),R(!1)},[]),ie=r((e,t)=>{const a=A;if(a&&a.rule.ruleId===e&&a.samplingId===t)R(!0),I({...a});else for(const a of i){if(a.id!==t)continue;const n=[...a.noisyOperations.map(e=>({category:"noisy",rule:e})),...a.highlyRelevantOperations.map(e=>({category:"highlyRelevant",rule:e})),...a.costReductionRules.map(e=>({category:"costReduction",rule:e}))].find(t=>t.rule.ruleId===e);if(n)return R(!0),void I({category:n.category,rule:n.rule,samplingId:t,summary:zl(n.category,n.rule)})}},[A,i]),se=r((e,t,a)=>{const n=A?.category;if(n){switch(n){case"noisy":v(a,t,Ms(e));break;case"highlyRelevant":y(a,t,Fs(e));break;case"costReduction":C(a,t,Ls(e))}R(!1)}},[A,v,y,C]),ce=r((e,t)=>{z({ruleId:e,samplingId:t})},[]),de=r(()=>{if(!L)return;const{ruleId:e,samplingId:t}=L;k(t,e,A?.category||El[D]),I(null),R(!1),z(null)},[L,A,D,k]),ue=r(()=>z(null),[]),pe=r((e,t)=>{w(e,t),X(!1)},[w]),me=r(e=>{const t=i[0]?.id??"default",a=K;a?y(a.samplingId,a.rule.ruleId,{name:a.rule.name,disabled:!e,error:!0,sourceScopes:[],operation:null,percentageAtLeast:null,notes:a.rule.notes}):e&&b(t,{name:"Auto - Keep All Error Traces",disabled:!1,error:!0,sourceScopes:[],operation:null,percentageAtLeast:null}),U(!1)},[i,K,b,y]),he=r((e,t)=>{const a=i[0]?.id??"default",n=q;n?C(n.samplingId,n.rule.ruleId,{name:n.rule.name,disabled:!e,sourceScopes:[],operation:null,percentageAtMost:t,notes:n.rule.notes}):e&&S(a,{name:"Auto - Drop Traces Cluster-Wide",disabled:!1,sourceScopes:[],operation:null,percentageAtMost:t}),H(!1)},[i,q,S,C]),ge=r(e=>{const t=El[D];let a=null;switch(t){case"noisy":{const n=Ms(e);a=jl(i,t,{sourceScopes:n.sourceScopes,operation:n.operation});break}case"highlyRelevant":{const n=Fs(e);a=jl(i,t,{sourceScopes:n.sourceScopes,operation:n.operation,error:n.error??!1,durationAtLeastMs:n.durationAtLeastMs});break}case"costReduction":{const n=Ls(e);a=jl(i,t,{sourceScopes:n.sourceScopes,operation:n.operation});break}}return a?{message:Va,ruleId:a}:null},[i,D]),fe=r(e=>{const t=A?.category,a=A?.rule.ruleId;if(!t)return null;let n=null;switch(t){case"noisy":{const o=Ms(e);n=jl(i,t,{sourceScopes:o.sourceScopes,operation:o.operation},a);break}case"highlyRelevant":{const o=Fs(e);n=jl(i,t,{sourceScopes:o.sourceScopes,operation:o.operation,error:o.error??!1,durationAtLeastMs:o.durationAtLeastMs},a);break}case"costReduction":{const o=Ls(e);n=jl(i,t,{sourceScopes:o.sourceScopes,operation:o.operation},a);break}}return n?{message:Va,ruleId:n}:null},[i,A]),ve=r(e=>{F(!1);for(const t of i){const a=[...t.noisyOperations.map(e=>({category:"noisy",rule:e})),...t.highlyRelevantOperations.map(e=>({category:"highlyRelevant",rule:e})),...t.costReductionRules.map(e=>({category:"costReduction",rule:e}))].find(t=>t.rule.ruleId===e);if(a)return R(!0),void I({category:a.category,rule:a.rule,samplingId:t.id,summary:zl(a.category,a.rule)})}},[i]),be=c(()=>{const e=[];return a.docsUrl&&e.push({id:ha(),type:Sa.Button,buttonProps:{"data-id":"sampling-btn-docs",label:Xa,leftIcon:tn,size:$.S,variant:O.Text,onClick:()=>window.open(a.docsUrl,"_blank")}}),e.push({id:ha(),type:Sa.Button,buttonProps:{"data-id":"sampling-btn-refresh",label:Ba,leftIcon:xn,size:$.S,variant:O.Text,onClick:m,loading:u}}),e.push({id:ha(),type:Sa.Button,buttonProps:{"data-id":"sampling-btn-create-rule",label:_a,rightIcon:en,size:$.S,variant:O.Primary,onClick:ae}}),e},[a.docsUrl,m,u,ae]);return e(ka,{children:[e(g,{$gap:12,$justifyContent:"space-between",children:[t(Ra,{icon:vn,title:ja,subTitle:Ua}),t(Pa,{actions:be})]}),e(h,{$gap:12,children:[t(B,{variant:Ha.Underline,options:Nl,selected:D,setSelected:N}),e(g,{$justifyContent:"space-between",children:[t(J,{status:Q.Default,message:Al[D]}),a.docsUrl&&t(P,{"data-id":"sampling-btn-docs-banner",label:"Docs",leftIcon:tn,size:$.S,variant:O.Text,onClick:()=>window.open(a.docsUrl,"_blank")})]}),D===Dl.Noisy&&t(xl,{title:wt,summary:W,onEdit:()=>X(!0)}),D===Dl.HighlyRelevant&&t(xl,{title:Dt,summary:G,onEdit:()=>U(!0)}),D===Dl.CostReduction&&t(xl,{title:Nt,summary:Y,onEdit:()=>H(!0)}),t(Is,{title:Il[D],items:te,isLoading:u,showTypeFilter:D===Dl.HighlyRelevant,tableRowsMaxHeight:p,onRuleClick:le,onCreateRule:ae,onEditRule:ie,onDeleteRule:ce})]}),t(_i,{data:A,defaultEditMode:E,onClose:re,onDelete:ce,onSaveEdit:se,sourceOptions:T,namespaceOptions:x,validateForm:fe,onNavigateToDuplicate:ve}),t(Si,{isOpen:M,category:El[D],onClose:ne,onSubmit:oe,sourceOptions:T,namespaceOptions:x,validateForm:ge,onNavigateToDuplicate:ve}),t(ki,{isOpen:V,enabled:s?.enabled??!1,keepPercentage:s?.keepPercentage??0,onClose:()=>X(!1),onSave:pe}),t(Ti,{isOpen:_,enabled:!!K&&!K.rule.disabled,onClose:()=>U(!1),onSave:me}),t(Di,{isOpen:j,enabled:!!q&&!q.rule.disabled,dropPercentage:q?.rule.percentageAtMost??25,onClose:()=>H(!1),onSave:he}),t(Wa,{title:Ya,description:qa,isOpen:!!L,onClose:ue,onApprove:de,approveLabel:Ga,denyLabel:Ka})]})},Vs=p.div`
|
|
196
|
+
`;const ai=[{key:"name",label:"Name",noSort:!0,noFilter:!0,flex:"0 0 156px",withTooltip:!0},{key:"summary",label:"Summary",noSort:!0,noFilter:!0},{key:"badges",label:"Type",noSort:!0,noFilter:!0,flex:"0 0 128px"}],ni=[{value:"all",label:Kt},{value:"Relevance",label:"Relevance"},{value:"Duration",label:"Duration"},{value:"Error",label:"Error"}],oi=({title:a,items:n,isLoading:o,showTypeFilter:s,tableRowsMaxHeight:r,onRuleClick:d,onCreateRule:u,onEditRule:p,onDeleteRule:h})=>{const g=m(),[b,y]=l(""),[C,S]=l("all"),k=c(()=>{let e=function(e,t,a){return a&&"all"!==t?e.filter(e=>e.typeBadge===t):e}(n,C,s);return e=function(e,t){if(!t.trim())return e;const a=t.toLowerCase();return e.filter(e=>{const t=e.name?.toLowerCase().includes(a),n=e.summary.map(e=>e.text).join("").toLowerCase();return t||n.includes(a)})}(e,b),e},[n,C,s,b]),w=c(()=>k.map(a=>{const n=a.typeBadge?function(e,t){const a=e.v2.colors;switch(t){case"Relevance":return{bg:a.blue[700],text:a.white[500]};case"Duration":return{bg:a.purple[700],text:a.white[500]};case"Error":return{bg:a.red[500],text:a.black[500]}}}(g,a.typeBadge):void 0;return{cells:[{key:"name",rawValue:a.name||"",component:()=>t(ei,{$disabled:a.disabled,children:a.name&&t(f,{size:v.XXS,color:g.v2.colors.white[500],nowrap:!0,children:a.name})})},{key:"summary",rawValue:a.summary.map(e=>e.text).join(""),component:()=>t(ei,{$disabled:a.disabled,children:t(Zl,{children:t(Gt,{parts:a.summary})})})},{key:"badges",rawValue:a.typeBadge||"",component:()=>e(ti,{children:[a.disabled&&t(re,{label:qt,textSize:v.XXXS,backgroundColor:g.v2.colors.grey[700],textColor:g.v2.colors.grey[300]}),a.typeBadge&&n&&t(re,{label:a.typeBadge,textSize:v.XXXS,backgroundColor:n.bg,textColor:n.text})]})}],onClick:()=>d(a)}}),[k,g,d]),I=c(()=>{const e=e=>t($a,{...e,fill:g.v2.colors.red[500]});return e.displayName="RedDeleteIcon",e},[g]),D=i(e=>{const t=w.indexOf(e);if(t<0)return[];const a=k[t];return a?[{id:"edit","data-id":"sampling-rule-action-edit",label:Ze,leftIcon:Pa,onClick:()=>p(a.ruleId,a.samplingId)},{id:"delete","data-id":"sampling-rule-action-delete",label:"",leftIcon:I,onClick:()=>h(a.ruleId,a.samplingId)}]:[]},[w,k,p,h,I]);return t(xe,{fullHeight:!0,richTitle:{icon:Ga,title:a,badge:{label:n.length,backgroundColor:g.v2.colors.silver[600],textColor:g.v2.colors.white[500]}},search:{"data-id":"sampling-search-rules",value:b,onChange:y,placeholder:"Search..",width:"500px",...s?{segment:{"data-id":"sampling-segment-type-filter",options:ni,selected:C,setSelected:S}}:{}},children:t($t,{variant:Pt.Pretty,hideHeader:!0,maxHeight:r,isLoading:o,noDataProps:{hideIcon:!0,title:"No Rules Exist",button:{label:"Create your first rule",onClick:u}},columns:ai,rows:w,getRowActions:D})})},li=a=>{const{workloads:o,samplingRules:s,k8sHealthProbesConfig:r,loading:u,tableRowsMaxHeight:p,fetchSamplingRules:m,createNoisyOperationRule:b,updateNoisyOperationRule:f,createHighlyRelevantOperationRule:v,updateHighlyRelevantOperationRule:y,createCostReductionRule:C,updateCostReductionRule:S,deleteSamplingRule:k,updateK8sHealthProbesConfig:w}=a,I=c(()=>o.map(({id:e})=>({id:`${e.namespace}/${e.kind}/${e.name}`,label:`${e.namespace} / ${e.kind} / ${e.name}`})),[o]),D=c(()=>Array.from(new Set(o.map(({id:e})=>e.namespace))).sort().map(e=>({id:e,label:e})),[o]),[T,N]=l(Yt.Noisy),[A,E]=l(null),[x,R]=l(!1),[F,M]=l(!1),[L,V]=l(null),[B,_]=l(!1),[U,j]=l(!1),[X,H]=l(!1),W=c(()=>Jt(r),[r]),G=c(()=>Qt(s),[s]),q=c(()=>Zt(G?.rule??null),[G]),K=c(()=>ea(s),[s]),Y=c(()=>ta(K?.rule??null),[K]),Z=d(A);Z.current=A,n(()=>{const e=Z.current;if(!e)return;const t=aa(s,e);t?E(t):(E(null),R(!1))},[s]);const ee=c(()=>{const e=new Set;return G&&e.add(G.rule.ruleId),K&&e.add(K.rule.ruleId),e},[G,K]),te=c(()=>na(s,T,ee),[s,T,ee]),ae=i(()=>M(!0),[]),ne=i(()=>M(!1),[]),oe=i(e=>{const t=s[0]?.id??"default";switch(ca[T]){case"noisy":b(t,ia(e));break;case"highlyRelevant":v(t,la(e));break;case"costReduction":C(t,oa(e))}M(!1)},[s,T,b,v,C]),le=i(e=>{const t=sa(s,e);t&&(R(!1),E(t))},[s]),ie=i(()=>{E(null),R(!1)},[]),se=i((e,t)=>{const a=A;if(a&&a.rule.ruleId===e&&a.samplingId===t)R(!0),E({...a});else for(const a of s){if(a.id!==t)continue;const n=[...a.noisyOperations.map(e=>({category:"noisy",rule:e})),...a.highlyRelevantOperations.map(e=>({category:"highlyRelevant",rule:e})),...a.costReductionRules.map(e=>({category:"costReduction",rule:e}))].find(t=>t.rule.ruleId===e);if(n)return R(!0),void E({category:n.category,rule:n.rule,samplingId:t,summary:ra(n.category,n.rule)})}},[A,s]),re=i((e,t,a)=>{const n=A?.category;if(n){switch(n){case"noisy":f(a,t,ia(e));break;case"highlyRelevant":y(a,t,la(e));break;case"costReduction":S(a,t,oa(e))}R(!1)}},[A,f,y,S]),ce=i((e,t)=>{V({ruleId:e,samplingId:t})},[]),de=i(()=>{if(!L)return;const{ruleId:e,samplingId:t}=L,a=A?.category||ca[T];k(t,e,a),E(null),R(!1),V(null)},[L,A,T,k]),ue=i(()=>V(null),[]),pe=i((e,t)=>{w(e,t),_(!1)},[w]),me=i(e=>{const t=s[0]?.id??"default",a=G;a?y(a.samplingId,a.rule.ruleId,{name:a.rule.name,disabled:!e,error:!0,sourceScopes:[],operation:null,percentageAtLeast:null,notes:a.rule.notes}):e&&v(t,{name:"Auto - Keep All Error Traces",disabled:!1,error:!0,sourceScopes:[],operation:null,percentageAtLeast:null}),j(!1)},[s,G,v,y]),he=i((e,t)=>{const a=s[0]?.id??"default",n=K;n?S(n.samplingId,n.rule.ruleId,{name:n.rule.name,disabled:!e,sourceScopes:[],operation:null,percentageAtMost:t,notes:n.rule.notes}):e&&C(a,{name:"Auto - Drop Traces Cluster-Wide",disabled:!1,sourceScopes:[],operation:null,percentageAtMost:t}),H(!1)},[s,K,C,S]),ge=i(e=>{const t=ca[T];let a=null;switch(t){case"noisy":{const n=ia(e);a=da(s,t,{sourceScopes:n.sourceScopes,operation:n.operation});break}case"highlyRelevant":{const n=la(e);a=da(s,t,{sourceScopes:n.sourceScopes,operation:n.operation,error:n.error??!1,durationAtLeastMs:n.durationAtLeastMs});break}case"costReduction":{const n=oa(e);a=da(s,t,{sourceScopes:n.sourceScopes,operation:n.operation});break}}return a?{message:ua,ruleId:a}:null},[s,T]),be=i(e=>{const t=A?.category,a=A?.rule.ruleId;if(!t)return null;let n=null;switch(t){case"noisy":{const o=ia(e);n=da(s,t,{sourceScopes:o.sourceScopes,operation:o.operation},a);break}case"highlyRelevant":{const o=la(e);n=da(s,t,{sourceScopes:o.sourceScopes,operation:o.operation,error:o.error??!1,durationAtLeastMs:o.durationAtLeastMs},a);break}case"costReduction":{const o=oa(e);n=da(s,t,{sourceScopes:o.sourceScopes,operation:o.operation},a);break}}return n?{message:ua,ruleId:n}:null},[s,A]),fe=i(e=>{M(!1);for(const t of s){const a=[...t.noisyOperations.map(e=>({category:"noisy",rule:e})),...t.highlyRelevantOperations.map(e=>({category:"highlyRelevant",rule:e})),...t.costReductionRules.map(e=>({category:"costReduction",rule:e}))].find(t=>t.rule.ruleId===e);if(a)return R(!0),void E({category:a.category,rule:a.rule,samplingId:t.id,summary:ra(a.category,a.rule)})}},[s]),ve=c(()=>{const e=[];return a.docsUrl&&e.push({id:At(),type:xt.Button,buttonProps:{"data-id":"sampling-btn-docs",label:pa,leftIcon:xa,size:$.S,variant:P.Text,onClick:()=>window.open(a.docsUrl,"_blank")}}),e.push({id:At(),type:xt.Button,buttonProps:{"data-id":"sampling-btn-refresh",label:ma,leftIcon:en,size:$.S,variant:P.Text,onClick:m,loading:u}}),e.push({id:At(),type:xt.Button,buttonProps:{"data-id":"sampling-btn-create-rule",label:ha,rightIcon:Ea,size:$.S,variant:P.Primary,onClick:ae}}),e},[a.docsUrl,m,u,ae]);return e(Ot,{children:[e(g,{$gap:12,$justifyContent:"space-between",children:[t(zt,{icon:Ga,title:ba,subTitle:ga}),t(Ut,{actions:ve})]}),e(h,{$gap:12,children:[t(z,{variant:va.Underline,options:fa,selected:T,setSelected:N}),e(g,{$justifyContent:"space-between",children:[t(J,{status:Q.Default,message:ya[T]}),a.docsUrl&&t(O,{"data-id":"sampling-btn-docs-banner",label:"Docs",leftIcon:xa,size:$.S,variant:P.Text,onClick:()=>window.open(a.docsUrl,"_blank")})]}),T===Yt.Noisy?t(mn,{title:Ee,summary:W,onEdit:()=>_(!0)}):T===Yt.HighlyRelevant?t(mn,{title:Se,summary:q,onEdit:()=>j(!0)}):T===Yt.CostReduction?t(mn,{title:De,summary:Y,onEdit:()=>H(!0)}):null,t(oi,{title:Ca[T],items:te,isLoading:u,showTypeFilter:T===Yt.HighlyRelevant,tableRowsMaxHeight:p,onRuleClick:le,onCreateRule:ae,onEditRule:se,onDeleteRule:ce})]}),t(rl,{formType:Ce.View,data:A,defaultEditMode:x,onClose:ie,onDelete:ce,onSaveEdit:re,sourceOptions:I,namespaceOptions:D,validateForm:be,onNavigateToDuplicate:fe}),t(rl,{formType:Ce.Create,isOpen:F,category:ca[T],onClose:ne,onSubmit:oe,sourceOptions:I,namespaceOptions:D,validateForm:ge,onNavigateToDuplicate:fe}),t(rl,{formType:Ce.EditAutoNoisy,isOpen:B,enabled:r?.enabled??!1,keepPercentage:r?.keepPercentage??0,onClose:()=>_(!1),onSave:pe}),t(rl,{formType:Ce.EditAutoHighlyRelevant,isOpen:U,enabled:!!G&&!G.rule.disabled,onClose:()=>j(!1),onSave:me}),t(rl,{formType:Ce.EditAutoCostReduction,isOpen:X,enabled:!!K&&!K.rule.disabled,dropPercentage:K?.rule.percentageAtMost??25,onClose:()=>H(!1),onSave:he}),t(Sa,{title:Da,description:Ia,isOpen:!!L,onClose:ue,onApprove:de,approveLabel:wa,denyLabel:ka})]})},ii=p.div`
|
|
344
197
|
display: flex;
|
|
345
198
|
align-items: center;
|
|
346
199
|
justify-content: space-between;
|
|
347
200
|
padding: 0 12px;
|
|
348
|
-
`,
|
|
201
|
+
`,si=({disabled:a,loading:n,tabs:o,selectedTab:i,setSelectedTab:s,onClickReset:r,onClickRefresh:d})=>{const[u,p]=l(!1),m=c(()=>{const e=[];return r&&e.push({id:At(),type:xt.Button,buttonProps:{label:"Reset",leftIcon:Aa,size:$.S,variant:P.Text,onClick:()=>p(!0),disabled:a}}),d&&e.push({id:At(),type:xt.Button,buttonProps:{label:"Refresh",leftIcon:en,size:$.S,variant:P.Text,onClick:d,disabled:a,loading:n}}),e},[a,n,d]);return e(ii,{children:[e(g,{$gap:12,$alignItems:"center",children:[t(zt,{icon:Wa,title:"Odigos Settings"}),t(ze,{width:"350px",options:o,values:[i],setValues:e=>s(e[0]),disabled:a})]}),t(Ut,{actions:m}),t(Sa,{isOpen:u,onClose:()=>p(!1),onDeny:()=>p(!1),onApprove:r,title:"Reset Settings",description:"Are you sure you want to reset the settings? This will clear the odigos-local-ui-config and reset the settings to the default values."})]})},ri=p(g)`
|
|
202
|
+
flex: 1;
|
|
203
|
+
min-height: 0;
|
|
204
|
+
width: 100%;
|
|
205
|
+
align-self: stretch;
|
|
206
|
+
`,ci=p(h)`
|
|
207
|
+
flex: 1;
|
|
208
|
+
min-height: 0;
|
|
209
|
+
height: 100%;
|
|
210
|
+
overflow-y: auto;
|
|
211
|
+
`,di=e=>"general"===e.name?0:"advanced"===e.name?2:1,ui=({minSupportedVersion:a=0,pageHeightOffset:o=0,configYamls:i,configYamlsLoading:s,effectiveConfig:r,effectiveConfigLoading:d,refetch:u,factoryReset:p,onSave:m,saveLoading:g})=>{const{isVersionSupported:b,version:f,isEnterprise:v}=ue(a),y=c(()=>{if(!r)return{};const{manifestYAML:e,provenance:t,...a}=r;return a},[r]),{formData:C,handleFormChange:S,getNestedValue:k,getFormDiff:w,isFormDirty:I}=L(y);n(()=>{"{}"!==JSON.stringify(y)&&"{}"===JSON.stringify(C)&&S(void 0,void 0,y)},[y,C]);const D=c(()=>[...i].sort((e,t)=>di(e)-di(t)),[i]),T=c(()=>(e=>{if(!e)return{};const t={};for(const a of e)t[a.helmPath]=a.reconciledFrom;return t})(r?.provenance),[r?.provenance]),N=c(()=>{const e=new Set;for(const t of i)for(const a of t.fields)a.componentType===F.Dropdown&&e.add(a.helmValuePath);return e},[i]),[A,E]=l(!1),x=c(()=>[{id:At(),type:xt.Button,buttonProps:{"data-id":"settings-save",variant:P.Primary,size:$.S,label:"Save Changes",leftIcon:za,loading:g,onClick:()=>E(!0)}},{id:At(),type:xt.Button,buttonProps:{"data-id":"settings-cancel",variant:P.Secondary,size:$.S,label:"Cancel",leftIcon:Ua,onClick:()=>S(void 0,void 0,y)}}],[g,w,y,C,S]),R=c(()=>D.map(e=>({id:e.name,label:e.displayName})),[D]),O=c(()=>D.map(e=>e.name),[D]),{selectedSection:M,setSelectedSection:V,setSectionRef:_,setScrollContainerRef:z}=Ta({sectionNames:O});return e(Ot,{$heightOffset:o,$gap:12,children:[t(si,{disabled:!b,loading:s||d,tabs:R,selectedTab:M,setSelectedTab:V,onClickReset:p?()=>p().then(()=>u?.()):void 0,onClickRefresh:u?()=>u():void 0}),e(Wt,{children:[!b&&t(Tn,{minSupportedVersion:a,currentVersion:f||""}),t(Ft,{isOpen:I,richTitle:{icon:Wa,title:"Config Settings"},actions:x}),t(Sa,{isOpen:A,title:"Save Changes via UI?",description:"We recommend updating via your Helm values.yaml to ensure changes are version-controlled and go through a proper review process.",onClose:()=>E(!1),approveLabel:"Save changes",onApprove:async()=>{const e=((e,t)=>{const a=(e,t,a)=>{for(let a=0;a<t.length-1;a++){const n=t[a];n in e&&"object"==typeof e[n]&&null!==e[n]||(e[n]={}),e=e[n]}e[t[t.length-1]]=a},n=JSON.parse(JSON.stringify(e));for(const e of t){const t=e.split(".");let o=n;for(const e of t){if(null==o||"object"!=typeof o){o=void 0;break}o=o[e]}"string"==typeof o&&a(n,t,o.replaceAll("-","_"))}return n})(w(y,C),N);await(m?.(e)),S(void 0,void 0,{})},denyLabel:"Keep editing",onDeny:()=>E(!1)}),e(ri,{$gap:24,$alignItems:"stretch",children:[t(ci,{ref:z,$gap:24,$width:"100%",children:i.length?D.map(a=>t(xe,{id:a.name,ref:e=>_(a.name,e),richTitle:{icon:Wa,title:a.displayName},children:a.fields.map(a=>{if(a.isEnterpriseOnly&&!v)return null;const n=K(a.componentProps||"{}",{}),o=T[a.helmValuePath];return e(h,{$gap:4,children:[t(pn,{componentType:a.componentType,inputType:n.type,name:a.helmValuePath,label:a.displayName,tooltip:a.description,badge:o?{status:"odigos-local-ui-config"===o?Q.Warning:He.Unknown,label:o,tooltip:`This field is reconciled from the following resource: ${o}`}:void 0,disabled:a.isHelmOnly||g,value:k("formData",a.helmValuePath),setValue:e=>S(a.helmValuePath,e),dropdownOptions:n.options?.map(e=>({id:e,value:e})),dropdownNoSearch:!0,dropdownNoCheckbox:!0},a.helmValuePath),a.isHelmOnly?t(J,{status:Q.Info,smallIcon:!0,message:"This field can only be updated via Helm values.yaml file"}):null]},a.helmValuePath)})},a.name)):s?t(Pe,{$height:"30vh",children:t(Ve,{withSpinner:!0})}):t(xe,{richTitle:{icon:Wa,title:"Config Settings"},children:t(B,{title:"YAML not found",subTitle:"The YAML for this resource is not available"})})}),t(ci,{children:d&&!r?.manifestYAML?t(Pe,{$height:"30vh",children:t(Ve,{withSpinner:!0})}):t(Nn,{title:"Effective Config YAML",yaml:r?.manifestYAML?.replaceAll(" |",""),defaultOpen:!0,fullHeight:!0})})]})]})]})};export{Io as AddActionDrawer,Gn as AddActionForm,Hn as AddActionFormContextProvider,Mo as AddDestinationDrawer,to as AddDestinationForm,Qn as AddDestinationFormContextProvider,Lo as AddRuleDrawer,ho as AddRuleForm,po as AddRuleFormContextProvider,Go as AddSourceDrawer,bo as AddSourceFormContextProvider,wl as CentralConnections,qo as EditConfigDrawer,Ll as Onboarding,Ql as PipelineCollectors,rl as SamplingRuleDrawer,yo as SamplingRuleForm,li as SamplingRules,ui as Settings,fl as SystemDrawer,Wn as useAddActionFormContext,Zn as useAddDestinationFormContext,mo as useAddRuleFormContext,fo as useAddSourceFormContext};
|