From dae4362e44427aec1c20333831ba32da3c31c10a Mon Sep 17 00:00:00 2001 From: Wangjunqi123 Date: Thu, 6 Jun 2024 10:32:21 +0800 Subject: [PATCH] elk/kibanaclient(v7): wrap API of install package policy --- elk/kibanaClient/7_17_16/clientFleetAPI+.go | 25 ++++++++++++ elk/kibanaClient/7_17_16/meta/extraPath.go | 1 + .../7_17_16/meta/packagePolicy.go | 39 +++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 elk/kibanaClient/7_17_16/meta/packagePolicy.go diff --git a/elk/kibanaClient/7_17_16/clientFleetAPI+.go b/elk/kibanaClient/7_17_16/clientFleetAPI+.go index ee85b6a8..e6e75e17 100644 --- a/elk/kibanaClient/7_17_16/clientFleetAPI+.go +++ b/elk/kibanaClient/7_17_16/clientFleetAPI+.go @@ -1,12 +1,16 @@ package kibanaClient import ( + "bytes" "context" + "encoding/json" "fmt" "io" "net/http" "gitee.com/openeuler/PilotGo-plugin-elk/kibanaClient/7_17_16/meta" + "github.com/elastic/elastic-agent-libs/kibana" + "gitee.com/openeuler/PilotGo-plugin-elk/global" ) func (client *KibanaClient_v7) GetPackageInfo(ctx context.Context, pkgname string) (*meta.PackageInfo_p, error) { @@ -24,3 +28,24 @@ func (client *KibanaClient_v7) GetPackageInfo(ctx context.Context, pkgname strin pinfo := Gjson_GetPackageInfo(bytes, "response.name", "response.policy_templates", "response.data_streams", "response.version", "response.title") return pinfo, nil } + +func (client *KibanaClient_v7) InstallFleetPackage(ctx context.Context, reqbody *meta.PackagePolicyRequest_p) (*kibana.PackagePolicy, error) { + reqBytes, err := json.Marshal(reqbody) + if err != nil { + return nil, fmt.Errorf("marshalling request json: %w", err) + } + + apiURL := meta.FleetPackagePoliciesAPI + resp, err := client.Client.Connection.SendWithContext(ctx, http.MethodPost, apiURL, nil, nil, bytes.NewReader(reqBytes)) + if err != nil { + return nil, fmt.Errorf("error calling %s API: %w", meta.FleetPackagePoliciesAPI, err) + } + defer resp.Body.Close() + + pkg_policy_resp := &kibana.PackagePolicyResponse{} + err = global.ReadJSONResponse(resp, pkg_policy_resp) + if err != nil { + return nil, fmt.Errorf("error reading response body: %w", err) + } + return &pkg_policy_resp.Item, nil +} diff --git a/elk/kibanaClient/7_17_16/meta/extraPath.go b/elk/kibanaClient/7_17_16/meta/extraPath.go index f22d69ef..edf87c74 100644 --- a/elk/kibanaClient/7_17_16/meta/extraPath.go +++ b/elk/kibanaClient/7_17_16/meta/extraPath.go @@ -2,4 +2,5 @@ package meta const ( FleetPackageInfoAPI = "/api/fleet/epm/packages/%s" + FleetPackagePoliciesAPI = "/api/fleet/package_policies" ) diff --git a/elk/kibanaClient/7_17_16/meta/packagePolicy.go b/elk/kibanaClient/7_17_16/meta/packagePolicy.go new file mode 100644 index 00000000..a6fcc380 --- /dev/null +++ b/elk/kibanaClient/7_17_16/meta/packagePolicy.go @@ -0,0 +1,39 @@ +package meta + +type PackagePolicyInput_p struct { + Type string `json:"type"` + Enabled bool `json:"enabled"` + Vars map[string]interface{} `json:"vars"` + Streams []PackagePolicyInputStream_p `json:"streams"` +} + +type PackagePolicyInputStream_p struct { + Enabled bool `json:"enabled"` + Data_stream PackagePolicyInputStremDatastream_p `json:"data_stream"` + Vars map[string]interface{} `json:"vars"` +} + +type PackagePolicyInputStremDatastream_p struct { + Type string `json:"type"` + Dataset string `json:"dataset"` +} + +type PackagePolicyRequestPackage_p struct { + Name string `json:"name"` + Version string `json:"version"` + Title string `json:"title"` +} + +type PackagePolicyRequest_p struct { + ID string `json:"id,omitempty"` + Enabled bool `json:"enabled"` + Output_id string `json:"output_id"` + Name string `json:"name"` + Description string `json:"description"` + Namespace string `json:"namespace"` + PolicyID string `json:"policy_id"` + Package PackagePolicyRequestPackage_p `json:"package"` + Vars map[string]interface{} `json:"vars"` + Inputs []PackagePolicyInput_p `json:"inputs"` + Force bool `json:"force"` +} -- Gitee