From df4de53d2911cdf61421e6c0014319fc8a1ac373 Mon Sep 17 00:00:00 2001 From: liugq Date: Thu, 8 Jun 2023 12:53:14 +0800 Subject: [PATCH 1/3] auto detect time agg location --- model/insight/metric_data.go | 8 ++++++++ plugin/api/insight/metadata.go | 3 ++- plugin/api/insight/metric_util.go | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/model/insight/metric_data.go b/model/insight/metric_data.go index 98a5924b..f8a4e5fc 100644 --- a/model/insight/metric_data.go +++ b/model/insight/metric_data.go @@ -51,6 +51,14 @@ func (m *Metric) GenerateExpression() (string, error){ return string(expressionBytes), nil } +func (m *Metric) AutoTimeBeforeGroup() bool { + for _, item := range m.Items { + if item.Statistic == "derivative" { + return false + } + } + return true +} type MetricItem struct { Name string `json:"name,omitempty"` diff --git a/plugin/api/insight/metadata.go b/plugin/api/insight/metadata.go index 63b25c06..c82d0841 100644 --- a/plugin/api/insight/metadata.go +++ b/plugin/api/insight/metadata.go @@ -214,7 +214,8 @@ func getMetricData(metric *insight.Metric) (interface{}, error) { agg = aggM["filter_agg"] } } - metricData := CollectMetricData(agg, true) + timeBeforeGroup := metric.AutoTimeBeforeGroup() + metricData := CollectMetricData(agg, timeBeforeGroup) var targetMetricData []insight.MetricData formula := strings.TrimSpace(metric.Formula) diff --git a/plugin/api/insight/metric_util.go b/plugin/api/insight/metric_util.go index d85d6a22..ce973623 100644 --- a/plugin/api/insight/metric_util.go +++ b/plugin/api/insight/metric_util.go @@ -79,7 +79,7 @@ func generateAgg(metricItem *insight.MetricItem, timeField string) map[string]in } func GenerateQuery(metric *insight.Metric) (interface{}, error) { - var timeBeforeGroup = true + var timeBeforeGroup = metric.AutoTimeBeforeGroup() basicAggs := util.MapStr{} i := 0 for _, metricItem := range metric.Items { From 9f90e49ae48b418655b0ab337170d493a741bb0d Mon Sep 17 00:00:00 2001 From: medcl Date: Thu, 8 Jun 2023 13:22:25 +0800 Subject: [PATCH 2/3] add license apply proxy api --- plugin/api/init.go | 3 +++ plugin/api/license/api.go | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 plugin/api/license/api.go diff --git a/plugin/api/init.go b/plugin/api/init.go index 281f3e27..79162e3c 100644 --- a/plugin/api/init.go +++ b/plugin/api/init.go @@ -1,6 +1,7 @@ package api import ( + "infini.sh/console/plugin/api/license" "path" "infini.sh/console/config" @@ -72,4 +73,6 @@ func Init(cfg *config.AppConfig) { insight.InitAPI() layout.InitAPI() notification.InitAPI() + + license.InitAPI() } diff --git a/plugin/api/license/api.go b/plugin/api/license/api.go new file mode 100644 index 00000000..27f058be --- /dev/null +++ b/plugin/api/license/api.go @@ -0,0 +1,42 @@ +/* Copyright © INFINI LTD. All rights reserved. + * Web: https://infinilabs.com + * Email: hello#infini.ltd */ + +package license + +import ( + "infini.sh/framework/core/api" + httprouter "infini.sh/framework/core/api/router" + "infini.sh/framework/core/util" + "infini.sh/license" + "net/http" +) + +type LicenseAPI struct { + api.Handler +} +func InitAPI() { + handler := LicenseAPI{} + api.HandleAPIMethod(api.POST, "/_license/request_trial", handler.RequestTrialLicense) +} + +func (handler *LicenseAPI) RequestTrialLicense(w http.ResponseWriter, req *http.Request, p httprouter.Params) { + body, err := handler.GetRawBody(req) + if err != nil { + handler.Error500(w, err.Error()) + return + } + + v := license.TrialRequest{} + util.FromJSONBytes(body, &v) + + //TODO implement config for the api endpoint + request:=util.NewPostRequest("https://api.infini.sh/_license/request_trial", util.MustToJSONBytes(v)) + response,err:=util.ExecuteRequest(request) + if err!=nil{ + handler.WriteError(w,err.Error(),response.StatusCode) + return + } + w.WriteHeader(response.StatusCode) + w.Write(response.Body) +} \ No newline at end of file From 355b6d3a9ceb87a2106061cf260a4b3b061a0aa1 Mon Sep 17 00:00:00 2001 From: Kassian Sun Date: Thu, 8 Jun 2023 14:09:37 +0800 Subject: [PATCH 3/3] [migration] don't skip bulk error check if count unmatch --- .../index_migration/index_migration.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/plugin/task_manager/index_migration/index_migration.go b/plugin/task_manager/index_migration/index_migration.go index ec9af750..e53f6bf5 100644 --- a/plugin/task_manager/index_migration/index_migration.go +++ b/plugin/task_manager/index_migration/index_migration.go @@ -461,15 +461,18 @@ func (p *processor) checkBulkPipelineTaskStatus(bulkTask *task.Task, cfg *migrat ) successDocs = migration_util.GetMapIntValue(bulkLabels, "success_docs") - if !cfg.Target.SkipCountCheck && successDocs != totalDocs { - return true, successDocs, fmt.Errorf("bulk complete but docs count unmatch: %d / %d, invalid docs: [%s] (reasons: [%s]), failure docs: [%s] (reasons: [%s])", successDocs, totalDocs, invalidDocs, invalidReasons, failureDocs, failureReasons) - } - - // successDocs matched but has errors - if bulkTask.Status == task.StatusError { - return true, successDocs, nil + if successDocs != totalDocs { + // check count + if !cfg.Target.SkipCountCheck { + return true, successDocs, fmt.Errorf("bulk complete but docs count unmatch: %d / %d, invalid docs: [%s] (reasons: [%s]), failure docs: [%s] (reasons: [%s])", successDocs, totalDocs, invalidDocs, invalidReasons, failureDocs, failureReasons) + } + // has errors + if bulkTask.Status == task.StatusError { + return true, successDocs, fmt.Errorf("bulk pipeline failed") + } } + // successDocs matched, return ok return true, successDocs, nil }