You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by qi...@apache.org on 2023/04/20 11:19:57 UTC
[skywalking-grafana-plugins] 02/04: feat: do request
This is an automated email from the ASF dual-hosted git repository.
qiuxiafan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-grafana-plugins.git
commit 11af6ea77117ff0e6d900ad037b35cb611250238
Author: Fine0830 <fa...@gmail.com>
AuthorDate: Tue Apr 18 16:05:58 2023 +0800
feat: do request
---
src/datasource.ts | 26 ++++++++++++++++++++++++++
src/plugin.json | 8 +++++++-
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/datasource.ts b/src/datasource.ts
index 92ee42e..eb37871 100644
--- a/src/datasource.ts
+++ b/src/datasource.ts
@@ -6,12 +6,18 @@ import {
MutableDataFrame,
FieldType,
} from '@grafana/data';
+import { getBackendSrv } from '@grafana/runtime';
import { MyQuery, MyDataSourceOptions } from './types';
+// proxy route
+const routePath = '/graphql';
export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
+ url: string;
constructor(instanceSettings: DataSourceInstanceSettings<MyDataSourceOptions>) {
super(instanceSettings);
+ // proxy url
+ this.url = instanceSettings.url || '';
}
async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
@@ -21,6 +27,8 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
// Return a constant for each query.
const data = options.targets.map((target) => {
+ // const query = defaults(target, defaultQuery);
+ // const dataQuery = getTemplateSrv().replace(query.queryText, options.scopedVars);
return new MutableDataFrame({
refId: target.refId,
fields: [
@@ -32,6 +40,24 @@ export class DataSource extends DataSourceApi<MyQuery, MyDataSourceOptions> {
return { data };
}
+ async doRequest(params?: Record<string, any>) {
+ // Do the request on proxy; the server will replace url + routePath with the url
+ // defined in plugin.json
+ const result = getBackendSrv().fetch({
+ method: 'POST',
+ url: `${this.url}${routePath}`,
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ params
+ // params: {
+ // query: "query queryServices($duration: Duration!,$keyword: String!) {\n services: getAllServices(duration: $duration, group: $keyword) {\n key: id\n label: name\n group\n }\n }",
+ // variables: {"duration":{"start":"2023-04-17 1503","end":"2023-04-17 1603","step":"MINUTE"},"keyword":""},
+ // }
+ });
+ console.log(result);
+ return result;
+ }
async testDatasource() {
// Implement a health check for your data source.
diff --git a/src/plugin.json b/src/plugin.json
index e333339..e467eb1 100644
--- a/src/plugin.json
+++ b/src/plugin.json
@@ -22,5 +22,11 @@
"dependencies": {
"grafanaDependency": "^9.3.8",
"plugins": []
- }
+ },
+ "routes": [
+ {
+ "path": "graphql",
+ "url": "{{ .JsonData.url }}"
+ }
+ ]
}