⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.72
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
grafana
/
public
/
build
/
View File Name :
1347.8ad23b870a6e21306189.js
(self.webpackChunkgrafana=self.webpackChunkgrafana||[]).push([[1347],{5192:(se,K,o)=>{var y;y={value:!0};var W=o(39954),p=o(8984),A=o(96540),ne=o(2543);function r(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var n=r(A);const N={JWT:"jwt",GCE:"gce"},ie="Configuration help box",le="Configuration drop zone",V="Configuration text area",X="Paste JWT button",U="Upload JWT button",oe="JWT form",ce="JWT button",ue="GCE button",M="Private Key Path Input",j="Private Key Input",s="Fill JWT info manually",f="Show private key path input",z="Show private key input",Y=["private_key","token_uri","client_email","project_id"],Z=({onChange:u,showConfigEditor:h,showPaste:E,showUpload:w,isPasting:g,isUploading:R})=>{const[b,L]=A.useState(),C=p.useTheme2(),H=A.useCallback(T=>{L(null),E()},[E]),x=A.useCallback(T=>{w(),L(null)},[w]),D=A.useCallback(T=>{if(T.trim()!==""){let S;try{S=JSON.parse(T)}catch{L("Invalid JWT token")}const k=$(S);k.isValid?(h(),u({privateKey:S.private_key,tokenUri:S.token_uri,clientEmail:S.client_email,projectId:S.project_id})):L(k.error)}},[L,u,h]);return n.default.createElement(n.default.Fragment,null,n.default.createElement(p.Field,{label:"JWT token",invalid:!!b,description:g?"Paste JWT token below":"Upload or paste Google JWT token",error:b},n.default.createElement(n.default.Fragment,null,R&&n.default.createElement("div",{"data-testid":le},p.FileDropzone&&n.default.createElement(p.FileDropzone,{options:{multiple:!1,accept:".json"},readAs:"readAsText",onLoad:T=>{D(T)}},n.default.createElement("p",{style:{margin:0,fontSize:`${C.typography.h4.fontSize}`,textAlign:"center"}},"Drop the Google JWT file here",n.default.createElement("br",null),n.default.createElement("br",null),n.default.createElement(p.Button,{fill:"outline"},"Click to browse files")))),g&&n.default.createElement(p.TextArea,{"data-testid":V,autoFocus:!0,invalid:!!b,placeholder:"Paste Google JWT token here",onBlur:T=>D(T.currentTarget.value),rows:12}))),!g&&n.default.createElement(n.default.Fragment,null,n.default.createElement(p.Button,{"data-testid":X,type:"button",fill:"outline",style:{color:`${C.colors.primary.text}`},onClick:H},"Paste JWT Token"),n.default.createElement("span",{style:{paddingRight:"10px",paddingLeft:"10px"}},"or")),g&&n.default.createElement(n.default.Fragment,null,n.default.createElement(p.Button,{"data-testid":U,type:"button",fill:"outline",style:{color:`${C.colors.primary.text}`},onClick:()=>{w()}},"Upload JWT Token"),n.default.createElement("span",{style:{paddingRight:"10px",paddingLeft:"10px"}},"or")),n.default.createElement(p.Button,{"data-testid":s,type:"button",fill:"outline",style:{color:`${C.colors.primary.text}`},onClick:h},"Fill In JWT Token manually"),g&&b&&n.default.createElement(p.Field,null,n.default.createElement(p.Button,{type:"button",fill:"outline",style:{color:`${C.colors.primary.text}`},onClick:x},"Upload JWT Token")))},$=u=>{if(!ne.isObject(u))return{isValid:!1,error:"Invalid JWT token"};const h=Y.filter(E=>!u[E]);return h.length>0?{isValid:!1,error:`Missing keys: ${h.join(", ")}`}:{isValid:!0}},{SecretFormField:q}=p.LegacyForms;var O;(function(u){u.PATH="path",u.JWT="jwt"})(O||(O={}));const B=({options:u,onReset:h,onOptionsChange:E,showPaste:w,showUpload:g})=>{var R;const[b,L]=n.default.useState((S=>"privateKeyPath"in S&&S.privateKeyPath!==""?O.PATH:O.JWT)(u.jsonData)),C=S=>W.onUpdateDatasourceJsonDataOption({options:u,onOptionsChange:E},S),H=()=>{b===O.JWT?L(O.PATH):L(O.JWT)},x=p.useTheme2(),D=n.default.createElement("span",null,b===O.PATH?n.default.createElement("a",{className:"external-link",onClick:H,"data-testid":z},"Paste private key"):"Paste private key"," ","or \xA0",b===O.JWT?n.default.createElement("a",{className:"external-link",onClick:H,"data-testid":f},"provide path to private file"):"provide path to private key file"),T={isConfigured:!!u.secureJsonFields.privateKey,value:((R=u.secureJsonData)===null||R===void 0?void 0:R.privateKey)||"",placeholder:"Enter Private key",onReset:()=>h(),onChange:W.onUpdateDatasourceSecureJsonDataOption({options:u,onOptionsChange:E},"privateKey"),"data-testid":j};return n.default.createElement("div",{"data-testid":oe},n.default.createElement(p.Field,{label:"Project ID"},n.default.createElement(p.Input,{id:"defaultProject",width:60,value:u.jsonData.defaultProject||"",onChange:C("defaultProject")})),n.default.createElement(p.Field,{label:"Client email"},n.default.createElement(p.Input,{width:60,id:"clientEmail",value:u.jsonData.clientEmail||"",onChange:C("clientEmail")})),n.default.createElement(p.Field,{label:"Token URI"},n.default.createElement(p.Input,{width:60,id:"tokenUri",value:u.jsonData.tokenUri||"",onChange:C("tokenUri")})),b===O.PATH&&n.default.createElement(p.Field,{label:"Private key path",description:D},n.default.createElement(p.Input,{width:60,id:"privateKeyPath",value:u.jsonData.privateKeyPath||"",placeholder:"File location of your private key (e.g. /etc/secrets/gce.pem)",onChange:C("privateKeyPath"),"data-testid":M})),b===O.JWT&&n.default.createElement(n.default.Fragment,null,p.SecretInput?n.default.createElement(p.Field,{label:"Private key",description:D},n.default.createElement(p.SecretInput,Object.assign({},T,{width:60}))):n.default.createElement(q,Object.assign({},T,{label:"Private key",labelWidth:10,inputWidth:20}))),n.default.createElement(n.default.Fragment,null,n.default.createElement(p.Button,{"data-testid":X,type:"button",fill:"outline",style:{color:`${x.colors.primary.text}`},onClick:w},"Paste JWT Token"),n.default.createElement("span",{style:{paddingRight:"10px",paddingLeft:"10px"}},"or"),n.default.createElement(p.Button,{"data-testid":U,type:"button",fill:"outline",style:{color:`${x.colors.primary.text}`},onClick:g},"Upload JWT Token")))};function _(u){const{options:h,onOptionsChange:E,authOptions:w}=u,{jsonData:g,secureJsonFields:R,secureJsonData:b}=h,L=()=>!!(g.clientEmail&&g.defaultProject&&g.tokenUri&&(R&&R.privateKey||g.privateKeyPath));g.authenticationType||(g.authenticationType=N.JWT);const[C,H]=A.useState(ee(g.authenticationType)),[x,D]=A.useState(L()),[T,S]=A.useState(!1),[k,G]=A.useState(!0),ae=()=>{S(!1),G(!0),D(!1)},re=()=>{S(!0),G(!1),D(!1)};return n.default.createElement(n.default.Fragment,null,n.default.createElement(p.FieldSet,{label:"Authentication"},n.default.createElement(p.Field,{label:"Authentication type"},n.default.createElement(p.RadioButtonGroup,{options:w,value:g.authenticationType||N.JWT,onChange:d=>{D(L()),E(Object.assign(Object.assign({},h),{jsonData:Object.assign(Object.assign({},h.jsonData),{authenticationType:d})})),H(ee(d))}}))),C&&n.default.createElement(p.FieldSet,{label:"JWT Key Details"},x?n.default.createElement(B,{options:h,onReset:()=>(d=>{const e=Object.assign({},b),t=d?Object.assign(Object.assign({},h.jsonData),d):Object.assign({},h.jsonData);delete t.clientEmail,delete t.defaultProject,delete t.tokenUri,delete t.privateKeyPath,delete e.privateKey,H(!0),D(!1),E(Object.assign(Object.assign({},h),{secureJsonFields:Object.assign(Object.assign({},h.secureJsonFields),{privateKey:!1}),secureJsonData:e,jsonData:t}))})(),onOptionsChange:E,showUpload:ae,showPaste:re}):n.default.createElement(Z,{showConfigEditor:()=>{D(!0)},showUpload:ae,showPaste:re,isPasting:T,isUploading:k,onChange:d=>{E(Object.assign(Object.assign({},h),{secureJsonFields:Object.assign(Object.assign({},R),{privateKey:!0}),secureJsonData:Object.assign(Object.assign({},b),{privateKey:d.privateKey}),jsonData:Object.assign(Object.assign({},g),{clientEmail:d.clientEmail,defaultProject:d.projectId,tokenUri:d.tokenUri})}))}})," "),g.authenticationType===N.GCE&&n.default.createElement(p.Field,{label:"Default project"},n.default.createElement(p.Input,{id:"defaultProject",width:60,value:h.jsonData.defaultProject||"",onChange:W.onUpdateDatasourceJsonDataOption(u,"defaultProject")})))}const ee=u=>u===N.JWT||u===void 0,te=[{label:"Google JWT File",value:N.JWT,ariaLabel:ce},{label:"GCE Default Service Account",value:N.GCE,ariaLabel:ue}];y=_,K.ConnectionConfig=u=>{const{options:{jsonData:h}}=u;h.authenticationType||(h.authenticationType=N.JWT);const E=h.authenticationType===N.JWT||h.authenticationType===void 0;return n.default.createElement(n.default.Fragment,null,n.default.createElement(_,Object.assign({authOptions:te},u)),n.default.createElement("div",{className:"grafana-info-box",style:{marginTop:"16px"},"data-testid":ie},n.default.createElement("p",null,"Don\u2019t know how to get a service account key file or create a service account? Read more"," ",n.default.createElement("a",{className:"external-link",target:"_blank",rel:"noopener noreferrer",href:"https://grafana.com/docs/grafana/latest/datasources/google-cloud-monitoring/google-authentication/"},"in the documentation."))),!E&&n.default.createElement(p.Alert,{title:"",severity:"info"},"Verify GCE default service account by clicking Save & Test"))},y=te,y=N,y=Z,y=B},65568:(se,K,o)=>{"use strict";se.exports=o(5192)},11347:(se,K,o)=>{"use strict";o.r(K),o.d(K,{plugin:()=>re});var y=o(2543),W=o(40187),p=o(69129),A=o(3591),ne=o(32196),r=o(96540);class n extends r.PureComponent{render(){return r.createElement("div",null,r.createElement("h2",null,"Cloud Monitoring alias patterns"),r.createElement("div",null,r.createElement("p",null,"Format the legend keys any way you want by using alias patterns. Format the legend keys any way you want by using alias patterns."),"Example:",r.createElement("code",null,"{{metric.name}} - {{metric.label.instance_name}}"),r.createElement("br",null),"Result: \xA0\xA0",r.createElement("code",null,"cpu/usage_time - server1-europe-west-1"),r.createElement("br",null),r.createElement("br",null),r.createElement("span",null,"Patterns:"),r.createElement("br",null),r.createElement("ul",{className:(0,ne.css)` list-style: none; `},r.createElement("li",null,r.createElement("code",null,"{{metric.type}}")," = metric type e.g. compute.googleapis.com/instance/cpu/usage_time"),r.createElement("li",null,r.createElement("code",null,"{{metric.name}}")," = name part of metric e.g. instance/cpu/usage_time"),r.createElement("li",null,r.createElement("code",null,"{{metric.service}}")," = service part of metric e.g. compute"),r.createElement("li",null,r.createElement("code",null,"{{metric.label.label_name}}")," = Metric label metadata e.g. metric.label.instance_name"),r.createElement("li",null,r.createElement("code",null,"{{resource.label.label_name}}")," = Resource label metadata e.g. resource.label.zone"),r.createElement("li",null,r.createElement("code",null,"{{metadata.system_labels.name}}")," = Meta data system labels e.g. metadata.system_labels.name. For this to work, the needs to be included in the group by"),r.createElement("li",null,r.createElement("code",null,"{{metadata.user_labels.name}}")," = Meta data user labels e.g. metadata.user_labels.name. For this to work, the needs to be included in the group by"),r.createElement("li",null,r.createElement("code",null,"{{bucket}}")," = bucket boundary for distribution metrics when using a heatmap in Grafana"),r.createElement("li",null,r.createElement("code",null,"{{project}}")," = The project name that was specified in the query editor"),r.createElement("li",null,r.createElement("code",null,"{{service}}")," = The service id that was specified in the SLO query editor"),r.createElement("li",null,r.createElement("code",null,"{{slo}}")," = The SLO id that was specified in the SLO query editor"),r.createElement("li",null,r.createElement("code",null,"{{selector}}")," = The Selector function that was specified in the SLO query editor"))))}}var N=o(68704),ie=o(91062),le=o(65568),V=o(14110),X=o(32264),U=o(25994),oe=o(17081);class ce extends r.PureComponent{constructor(){super(...arguments),this.handleOnOptionsChange=e=>{(e.jsonData.privateKeyPath||e.secureJsonFields.privateKey)&&(0,V.rR)("grafana_cloud_monitoring_config_changed",{authenticationType:"JWT",privateKey:e.secureJsonFields.privateKey,privateKeyPath:!!e.jsonData.privateKeyPath}),this.props.onOptionsChange(e)}}render(){const{options:e,onOptionsChange:t}=this.props;return r.createElement(r.Fragment,null,r.createElement(N.I,{dataSourceName:"Google Cloud Monitoring",docsLink:"https://grafana.com/docs/grafana/latest/datasources/google-cloud-monitoring/",hasRequiredFields:!0}),r.createElement(U.c,null),r.createElement(le.ConnectionConfig,{...this.props,onOptionsChange:this.handleOnOptionsChange}),X.$.secureSocksDSProxyEnabled&&r.createElement(r.Fragment,null,r.createElement(U.c,null),r.createElement(ie.A,{title:"Additional settings",description:"Additional settings are optional settings that can be configured for more control over your data source. This includes Secure Socks Proxy.",isCollapsible:!0,isInitiallyOpen:e.jsonData.enableSecureSocksProxy!==void 0},r.createElement(oe.Y,{options:e,onOptionsChange:t}))))}}var ue=o(38054),M=o(72574),j=o(95626),s=o(18007),f=o(42467);class z extends r.PureComponent{constructor(e){super(e),this.queryTypes=[{value:s.Hm.Projects,label:"Projects"},{value:s.Hm.Services,label:"Services"},{value:s.Hm.MetricTypes,label:"Metric Types"},{value:s.Hm.LabelKeys,label:"Label Keys"},{value:s.Hm.LabelValues,label:"Label Values"},{value:s.Hm.ResourceTypes,label:"Resource Types"},{value:s.Hm.Aggregations,label:"Aggregations"},{value:s.Hm.Aligners,label:"Aligners"},{value:s.Hm.AlignmentPeriods,label:"Alignment Periods"},{value:s.Hm.Selectors,label:"Selectors"},{value:s.Hm.SLOServices,label:"SLO Services"},{value:s.Hm.SLO,label:"Service Level Objectives (SLO)"}],this.defaults={selectedQueryType:this.queryTypes[0].value,metricDescriptors:[],selectedService:"",selectedMetricType:"",labels:[],labelKey:"",metricTypes:[],services:[],sloServices:[],selectedSLOService:"",projects:[],projectName:"",loading:!0},this.onPropsChange=()=>{const{metricDescriptors:t,labels:a,metricTypes:l,services:i,...c}=this.state;this.props.onChange({...c,refId:"CloudMonitoringVariableQueryEditor-VariableQuery"})},this.state=Object.assign(this.defaults,this.props.query)}async componentDidMount(){await this.props.datasource.ensureGCEDefaultProject();const e=this.props.query.projectName||this.props.datasource.getDefaultProject(),t=await this.props.datasource.getProjects(),a=await this.props.datasource.getMetricTypes(this.props.query.projectName||this.props.datasource.getDefaultProject()),l=(0,j.cR)(a).map(I=>({value:I.service,label:I.serviceShortName}));let i="";l.some(I=>I.value===(0,M.w)().replace(this.state.selectedService))?i=this.state.selectedService:l&&l.length>0&&(i=l[0].value);const{metricTypes:c,selectedMetricType:P}=(0,j.i0)(a,this.state.selectedMetricType,(0,M.w)().replace(this.state.selectedMetricType),(0,M.w)().replace(i)),F=await this.props.datasource.getSLOServices(e),Q={services:l,selectedService:i,metricTypes:c,selectedMetricType:P,metricDescriptors:a,projects:t,...await this.getLabels(P,e),sloServices:F,loading:!1,projectName:e};this.setState(Q,()=>this.onPropsChange())}async onQueryTypeChange(e){const t={selectedQueryType:e,...await this.getLabels(this.state.selectedMetricType,this.state.projectName,e)};this.setState(t)}async onProjectChange(e){const t=await this.props.datasource.getMetricTypes(e),a=await this.getLabels(this.state.selectedMetricType,e),{metricTypes:l,selectedMetricType:i}=(0,j.i0)(t,this.state.selectedMetricType,(0,M.w)().replace(this.state.selectedMetricType),(0,M.w)().replace(this.state.selectedService)),c=await this.props.datasource.getSLOServices(e);this.setState({...a,metricTypes:l,selectedMetricType:i,metricDescriptors:t,projectName:e,sloServices:c},()=>this.onPropsChange())}async onServiceChange(e){const{metricTypes:t,selectedMetricType:a}=(0,j.i0)(this.state.metricDescriptors,this.state.selectedMetricType,(0,M.w)().replace(this.state.selectedMetricType),(0,M.w)().replace(e)),l={selectedService:e,metricTypes:t,selectedMetricType:a,...await this.getLabels(a,this.state.projectName)};this.setState(l,()=>this.onPropsChange())}async onMetricTypeChange(e){const t={selectedMetricType:e,...await this.getLabels(e,this.state.projectName)};this.setState(t,()=>this.onPropsChange())}onLabelKeyChange(e){this.setState({labelKey:e},()=>this.onPropsChange())}componentDidUpdate(e,t){const a=t.selectedQueryType!==this.state.selectedQueryType,l=this.state.selectedSLOService!==t.selectedSLOService;(a||l)&&this.onPropsChange()}async getLabels(e,t,a=this.state.selectedQueryType){let l={labels:this.state.labels,labelKey:this.state.labelKey};if(e&&a===s.Hm.LabelValues){const i=await(0,j.zw)(this.props.datasource,e,t),c=i.some(P=>P===(0,M.w)().replace(this.state.labelKey))?this.state.labelKey:i[0];l={labels:i,labelKey:c}}return l}renderQueryTypeSwitch(e){const t={label:"Template Variables",expanded:!1,options:(0,M.w)().getVariables().map(a=>({value:`$${a.name}`,label:`$${a.name}`}))};switch(e){case s.Hm.MetricTypes:return r.createElement(r.Fragment,null,r.createElement(f.HX,{allowCustomValue:!0,value:this.state.projectName,options:[t,...this.state.projects],onChange:a=>this.onProjectChange(a),label:"Project"}),r.createElement(f.HX,{value:this.state.selectedService,options:[t,...this.state.services],onChange:a=>this.onServiceChange(a),label:"Service"}));case s.Hm.LabelKeys:case s.Hm.LabelValues:case s.Hm.ResourceTypes:return r.createElement(r.Fragment,null,r.createElement(f.HX,{allowCustomValue:!0,value:this.state.projectName,options:[t,...this.state.projects],onChange:a=>this.onProjectChange(a),label:"Project"}),r.createElement(f.HX,{value:this.state.selectedService,options:[t,...this.state.services],onChange:a=>this.onServiceChange(a),label:"Service"}),r.createElement(f.HX,{value:this.state.selectedMetricType,options:[t,...this.state.metricTypes.map(({value:a,name:l})=>({value:a,label:l}))],onChange:a=>this.onMetricTypeChange(a),label:"Metric Type"}),e===s.Hm.LabelValues&&r.createElement(f.HX,{value:this.state.labelKey,options:[t,...this.state.labels.map(a=>({value:a,label:a}))],onChange:a=>this.onLabelKeyChange(a),label:"Label Key"}));case s.Hm.Aligners:case s.Hm.Aggregations:return r.createElement(r.Fragment,null,r.createElement(f.HX,{value:this.state.selectedService,options:[t,...this.state.services],onChange:a=>this.onServiceChange(a),label:"Service"}),r.createElement(f.HX,{value:this.state.selectedMetricType,options:[t,...this.state.metricTypes.map(({value:a,name:l})=>({value:a,label:l}))],onChange:a=>this.onMetricTypeChange(a),label:"Metric Type"}));case s.Hm.SLOServices:return r.createElement(r.Fragment,null,r.createElement(f.HX,{allowCustomValue:!0,value:this.state.projectName,options:[t,...this.state.projects],onChange:a=>this.onProjectChange(a),label:"Project"}));case s.Hm.SLO:return r.createElement(r.Fragment,null,r.createElement(f.HX,{allowCustomValue:!0,value:this.state.projectName,options:[t,...this.state.projects],onChange:a=>this.onProjectChange(a),label:"Project"}),r.createElement(f.HX,{value:this.state.selectedSLOService,options:[t,...this.state.sloServices],onChange:a=>{this.setState({...this.state,selectedSLOService:a})},label:"SLO Service"}));default:return""}}render(){return this.state.loading?r.createElement(f.HX,{value:"loading",options:[{value:"loading",label:"Loading..."}],onChange:e=>null,label:"Query Type"}):r.createElement(r.Fragment,null,r.createElement(f.HX,{value:this.state.selectedQueryType,options:this.queryTypes,onChange:e=>this.onQueryTypeChange(e),label:"Query Type"}),this.renderQueryTypeSwitch(this.state.selectedQueryType))}}var Y=o(75505),Z=o(62467),$=o(65474),q=o(69862),O=o(81160),B=o(43127),_=o(26657),ee=o(17172),te=o(47773),u=o(40996),h=o(50877),E=o(71087),w=o(81580),g=o(10354),R=o(81381);const b=d=>({...(0,R.kU)(d),title:"",text:""}),L=d=>{const{datasource:e,query:t,onRunQuery:a,data:l,onChange:i,range:c}=d,F=(l?.series.length?l?.series[0].meta:{})?.custom??{},Q={...b(e),...t.timeSeriesList},[I,v]=(0,r.useState)(Q.title||""),[m,J]=(0,r.useState)(Q.text||""),de={label:"Template Variables",options:e.getVariables().map(h.z)},me=pe=>{v(pe.target.value)},he=pe=>{J(pe.target.value)};return(0,u.A)(()=>{i({...t,timeSeriesList:{...Q,title:I}})},1e3,[I,i]),(0,u.A)(()=>{i({...t,timeSeriesList:{...Q,text:m}})},1e3,[m,i]),(0,r.useEffect)(()=>{(!t.queryType||!Object.values(s.bO).includes(t.queryType))&&i({...t,queryType:s.bO.TIME_SERIES_LIST})}),r.createElement(E.D,null,r.createElement(r.Fragment,null,r.createElement(R.wu,{refId:t.refId,variableOptionGroup:de,customMetaData:F,onChange:i,onRunQuery:a,datasource:e,query:t,range:c||(0,B.E2)()}),r.createElement(w.c,{label:"Title",htmlFor:"annotation-query-title"},r.createElement(g.p,{id:"annotation-query-title",value:I,onChange:me})),r.createElement(w.c,{label:"Text",htmlFor:"annotation-query-text"},r.createElement(g.p,{id:"annotation-query-text",value:m,onChange:he}))),r.createElement(f.sy,null))},C=d=>d.target?.title!==void 0||d.target?.text!==void 0,H=d=>({prepareAnnotation:e=>{if(!C(e))return e;const{enable:t,name:a,iconColor:l}=e,{target:i}=e;return{datasource:e.datasource,enable:t,name:a,iconColor:l,target:{intervalMs:d.intervalMs,refId:i?.refId||"annotationQuery",queryType:s.bO.ANNOTATION,timeSeriesList:{projectName:i?.projectName||d.getDefaultProject(),filters:i?.filters||[],crossSeriesReducer:"REDUCE_NONE",perSeriesAligner:s.Vb.ALIGN_NONE,title:i?.title||"",text:i?.text||""}}}},prepareQuery:e=>{if(e.target)return{...e.target,queryType:s.bO.ANNOTATION,type:"annotationQuery"}},QueryEditor:L});var x=o(20902),D=o(29505);class T{constructor(e){this.datasource=e}async execute(e){try{switch(e.projectName||(e.projectName=this.datasource.getDefaultProject()),e.selectedQueryType){case s.Hm.Projects:return this.handleProjectsQuery();case s.Hm.Services:return this.handleServiceQuery(e);case s.Hm.MetricTypes:return this.handleMetricTypesQuery(e);case s.Hm.LabelKeys:return this.handleLabelKeysQuery(e);case s.Hm.LabelValues:return this.handleLabelValuesQuery(e);case s.Hm.ResourceTypes:return this.handleResourceTypeQuery(e);case s.Hm.Aligners:return this.handleAlignersQuery(e);case s.Hm.AlignmentPeriods:return this.handleAlignmentPeriodQuery();case s.Hm.Aggregations:return this.handleAggregationQuery(e);case s.Hm.SLOServices:return this.handleSLOServicesQuery(e);case s.Hm.SLO:return this.handleSLOQuery(e);case s.Hm.Selectors:return this.handleSelectorQuery();default:return[]}}catch(t){return console.error(`Could not run CloudMonitoringMetricFindQuery ${e}`,t),[]}}async handleProjectsQuery(){return(await this.datasource.getProjects()).map(t=>({text:t.label,value:t.value,expandable:!0}))}async handleServiceQuery({projectName:e}){const t=await this.datasource.getMetricTypes(e);return(0,j.cR)(t).map(l=>({text:l.serviceShortName,value:l.service,expandable:!0}))}async handleMetricTypesQuery({selectedService:e,projectName:t}){if(!e)return[];const a=await this.datasource.getMetricTypes(t);return(0,j.Su)(a,this.datasource.templateSrv.replace(e)).map(l=>({text:l.displayName,value:l.type,expandable:!0}))}async handleLabelKeysQuery({selectedMetricType:e,projectName:t}){return e?(await(0,j.zw)(this.datasource,e,t)).map(this.toFindQueryResult):[]}async handleLabelValuesQuery({selectedMetricType:e,labelKey:t,projectName:a}){if(!e)return[];const l="handleLabelValuesQuery",i=await this.datasource.getLabels(e,l,a,{groupBys:[t],crossSeriesReducer:"REDUCE_MEAN"}),c=this.datasource.templateSrv.replace(t);return(i.hasOwnProperty(c)?i[c]:[]).map(this.toFindQueryResult)}async handleResourceTypeQuery({selectedMetricType:e,projectName:t}){if(!e)return[];const a="handleResourceTypeQueryQueryType";return(await this.datasource.getLabels(e,a,t))["resource.type"]?.map(this.toFindQueryResult)??[]}async handleAlignersQuery({selectedMetricType:e,projectName:t}){if(!e)return[];const l=(await this.datasource.getMetricTypes(t)).find(i=>i.type===this.datasource.templateSrv.replace(e));return l?(0,j.pd)(l.valueType,l.metricKind).map(this.toFindQueryResult):[]}async handleAggregationQuery({selectedMetricType:e,projectName:t}){if(!e)return[];const l=(await this.datasource.getMetricTypes(t)).find(i=>i.type===this.datasource.templateSrv.replace(e));return l?(0,j._T)(l.valueType,l.metricKind).map(this.toFindQueryResult):[]}async handleSLOServicesQuery({projectName:e}){return(await this.datasource.getSLOServices(e)).map(this.toFindQueryResult)}async handleSLOQuery({selectedSLOService:e,projectName:t}){return(await this.datasource.getServiceLevelObjectives(t,e)).map(this.toFindQueryResult)}async handleSelectorQuery(){return x.ZM.map(this.toFindQueryResult)}handleAlignmentPeriodQuery(){return x.T2.map(this.toFindQueryResult)}toFindQueryResult(e){return(0,y.isString)(e)?{text:e,expandable:!0}:{...e,expandable:!0}}}class S extends D.f5{constructor(e){super(),this.datasource=e,this.editor=z,this.metricFindQuery=new T(e)}query(e){const t=(0,$.H)(this.metricFindQuery.execute(e.targets[0]));return(0,$.H)(this.datasource.ensureGCEDefaultProject()).pipe((0,q.Z)(()=>t),(0,O.T)(a=>({data:a})))}}class k extends _.iy{constructor(e,t=(0,M.w)()){super(e),this.instanceSettings=e,this.templateSrv=t,this.authenticationType=e.jsonData.authenticationType||"jwt",this.variables=new S(this),this.intervalMs=0,this.annotations=H(this),this.backendSrv=(0,ee.AI)()}getVariables(){return this.templateSrv.getVariables().map(e=>`$${e.name}`)}query(e){return e.targets=e.targets.map(t=>({...this.migrateQuery(t),intervalMs:e.intervalMs})),super.query(e)}applyTemplateVariables(e,t){const{timeSeriesList:a,timeSeriesQuery:l,sloQuery:i,promQLQuery:c}=e;return{...e,datasource:this.getRef(),intervalMs:this.intervalMs,timeSeriesList:a&&{...this.interpolateProps(a,t),projectName:this.templateSrv.replace(a.projectName?a.projectName:this.getDefaultProject(),t),filters:this.interpolateFilters(a.filters||[],t),groupBys:this.interpolateGroupBys(a.groupBys||[],t),view:a.view||"FULL"},timeSeriesQuery:l&&{...this.interpolateProps(l,t),projectName:this.templateSrv.replace(l.projectName?l.projectName:this.getDefaultProject(),t)},sloQuery:i&&this.interpolateProps(i,t),promQLQuery:c&&this.interpolateProps(c,t)}}async getLabels(e,t,a,l,i){const c={targets:[{refId:t,datasource:this.getRef(),queryType:s.bO.TIME_SERIES_LIST,timeSeriesList:(0,j.LG)({projectName:this.templateSrv.replace(a),groupBys:this.interpolateGroupBys(l?.groupBys||[],{}),crossSeriesReducer:l?.crossSeriesReducer??"REDUCE_NONE",view:"HEADERS"},e)}],range:i||(0,B.E2)()},P=c.targets;return P.length?(0,Y.s)((0,$.H)(this.ensureGCEDefaultProject()).pipe((0,q.Z)(()=>this.backendSrv.fetch({url:"/api/ds/query",method:"POST",headers:this.getRequestHeaders(),data:{from:c.range.from.valueOf().toString(),to:c.range.to.valueOf().toString(),queries:P}})),(0,O.T)(({data:F})=>{const I=(0,te.bE)({data:F})?.data.map(v=>v.meta?.custom?.labels).filter(v=>!!v).reduce((v,m)=>{for(let J in m)v[J]||(v[J]=new Set),m[J]&&v[J].add(m[J]);return v},{});return Object.fromEntries(Object.entries(I).map(([v,m])=>{const J=Array.from(m);return[v,J]}))}))):(0,Y.s)((0,Z.of)({results:[]}))}async getGCEDefaultProject(){return this.getResource("gceDefaultProject")}getDefaultProject(){const{defaultProject:e,authenticationType:t,gceDefaultProject:a}=this.instanceSettings.jsonData;return t==="gce"?a||"":e||""}async ensureGCEDefaultProject(){const{authenticationType:e,gceDefaultProject:t}=this.instanceSettings.jsonData;e==="gce"&&!t&&(this.instanceSettings.jsonData.gceDefaultProject=await this.getGCEDefaultProject())}async getMetricTypes(e){return e?this.getResource(`metricDescriptors/v3/projects/${this.templateSrv.replace(e)}/metricDescriptors`):[]}async filterMetricsByType(e,t){return e?this.getResource(`metricDescriptors/v3/projects/${this.templateSrv.replace(e)}/metricDescriptors`,{filter:`metric.type : "${t}"`}):[]}async getSLOServices(e){return this.getResource(`services/v3/projects/${this.templateSrv.replace(e)}/services?pageSize=1000`)}async getServiceLevelObjectives(e,t){if(!t)return Promise.resolve([]);let{projectName:a,serviceId:l}=this.interpolateProps({projectName:e,serviceId:t});return this.getResource(`slo-services/v3/projects/${a}/services/${l}/serviceLevelObjectives`)}getProjects(){return this.getResource("projects")}migrateMetricTypeFilter(e,t){const a=["metric.type","=",e];return t?.length?t.concat("AND",a):a}migrateQuery(e){const{hide:t,refId:a,datasource:l,key:i,queryType:c,maxLines:P,metric:F,intervalMs:Q,type:I,...v}=e;if(!e.hasOwnProperty("metricQuery")&&!e.hasOwnProperty("sloQuery")&&!e.hasOwnProperty("timeSeriesQuery")&&!e.hasOwnProperty("timeSeriesList")){let m=v.filters||[];return v.metricType&&(m=this.migrateMetricTypeFilter(v.metricType,m)),{datasource:l,key:i,refId:a,intervalMs:Q,hide:t,queryType:I==="annotationQuery"?s.bO.ANNOTATION:s.bO.TIME_SERIES_LIST,timeSeriesList:{...v,projectName:(0,y.get)(e,"projectName")||this.getDefaultProject(),filters:m,view:v.view||"FULL"}}}if((0,y.has)(e,"metricQuery")&&["metrics",s.bO.ANNOTATION].includes(e.queryType??"")){const m=(0,y.get)(e,"metricQuery");m.editorMode==="mql"?(e.timeSeriesQuery={projectName:m.projectName,query:m.query,graphPeriod:m.graphPeriod},e.queryType=s.bO.TIME_SERIES_QUERY):(e.timeSeriesList={projectName:m.projectName||this.getDefaultProject(),crossSeriesReducer:m.crossSeriesReducer,alignmentPeriod:m.alignmentPeriod,perSeriesAligner:m.perSeriesAligner,groupBys:m.groupBys,filters:m.filters,view:m.view,preprocessor:m.preprocessor},e.queryType=s.bO.TIME_SERIES_LIST,m.metricType&&(e.timeSeriesList.filters=this.migrateMetricTypeFilter(m.metricType,e.timeSeriesList.filters))),e.aliasBy=m.aliasBy,e=(0,y.omit)(e,"metricQuery")}return e.queryType===s.bO.SLO&&(0,y.has)(e,"sloQuery.aliasBy")&&(e.aliasBy=(0,y.get)(e,"sloQuery.aliasBy"),e=(0,y.omit)(e,"sloQuery.aliasBy")),e}interpolateProps(e,t={}){return Object.entries(e).reduce((a,[l,i])=>({...a,[l]:i&&(0,y.isString)(i)?this.templateSrv.replace(i,t):i}),{})}filterQuery(e){if(e.hide)return!1;if(e.queryType===s.bO.SLO){if(!e.sloQuery)return!1;const{selectorName:t,serviceId:a,sloId:l,projectName:i,lookbackPeriod:c}=e.sloQuery;return!!t&&!!a&&!!l&&!!i&&(t!==x.ok||!!c)}return e.queryType===s.bO.TIME_SERIES_QUERY?!!e.timeSeriesQuery&&!!e.timeSeriesQuery.projectName&&!!e.timeSeriesQuery.query:e.queryType&&[s.bO.TIME_SERIES_LIST,s.bO.ANNOTATION].includes(e.queryType)?!!e.timeSeriesList&&!!e.timeSeriesList.projectName&&!!(0,j.Bf)(e.timeSeriesList):e.queryType===s.bO.PROMQL?!!e.promQLQuery&&!!e.promQLQuery.projectName&&!!e.promQLQuery.expr&&!!e.promQLQuery.step:!1}interpolateVariablesInQueries(e,t){return e.map(a=>this.applyTemplateVariables(this.migrateQuery(a),t))}interpolateFilters(e,t){const a=(0,y.chunk)(e,4).map(([i,c,P,F])=>({key:i,operator:c,value:P,...F&&{condition:F}})).filter(i=>i.value);return(0,y.flatten)(a.map(({key:i,operator:c,value:P,condition:F})=>[this.templateSrv.replace(i,t||{}),c,this.templateSrv.replace(P,t||{},Q=>(0,y.isArray)(Q)&&Q.length?`(${Q.join("|")})`:Q),...F?[F]:[]]))||[]}interpolateGroupBys(e,t){let a=[];return(e||[]).forEach(l=>{const i=this.templateSrv.replace(l,t||{},"csv").split(",");Array.isArray(i)?a=a.concat(i):a.push(i)}),a}}var G=o(16243);const ae=d=>{(0,V.rR)("grafana_ds_cloudmonitoring_dashboard_loaded",d)},re=new W.tD(k).setQueryEditorHelp(n).setQueryEditor(ue.w).setConfigEditor(ce).setVariableQueryEditor(z);(0,A.J7)().subscribe(p.gc,({payload:{dashboardId:d,orgId:e,grafanaVersion:t,queries:a}})=>{const l=a[G.id];let i={[s.bO.TIME_SERIES_QUERY]:0,[s.bO.TIME_SERIES_LIST]:0,[s.bO.SLO]:0,[s.bO.ANNOTATION]:0,[s.bO.PROMQL]:0};l.forEach(c=>{c.queryType===s.bO.TIME_SERIES_QUERY||c.queryType===s.bO.TIME_SERIES_LIST||c.queryType===s.bO.SLO||c.queryType===s.bO.ANNOTATION||c.queryType===s.bO.PROMQL?i[c.queryType]++:c.queryType==="metrics"&&(c.hasOwnProperty("type")&&(0,y.get)(c,"type")==="annotationQuery"&&i.annotation++,(0,y.get)(c,"metricQuery.editorMode")==="mql"?i.timeSeriesQuery++:i.timeSeriesList++)}),l&&l.length>0&&ae({grafana_version:t,dashboard_id:d,org_id:e,mql_queries:i[s.bO.TIME_SERIES_QUERY],time_series_filter_queries:i[s.bO.TIME_SERIES_LIST],slo_queries:i[s.bO.SLO],annotation_queries:i[s.bO.ANNOTATION],promQL_queries:i[s.bO.PROMQL]})})}}]); //# sourceMappingURL=1347.8ad23b870a6e21306189.js.map