internal/pkg/dl/enrollment_api_key.go (74 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. package dl import ( "context" "encoding/json" "fmt" "github.com/elastic/fleet-server/v7/internal/pkg/bulk" "github.com/elastic/fleet-server/v7/internal/pkg/dsl" "github.com/elastic/fleet-server/v7/internal/pkg/model" ) const ( FieldAPIKeyID = "api_key_id" ) var ( QueryEnrollmentAPIKeyByID = prepareFindActiveEnrollmentAPIKeyByID() QueryEnrollmentAPIKeyByPolicyID = prepareFindActiveEnrollmentAPIKeyByPolicyID() ) func prepareFindActiveEnrollmentAPIKeyByID() *dsl.Tmpl { tmpl := dsl.NewTmpl() root := dsl.NewRoot() filter := root.Query().Bool().Filter() filter.Term(FieldAPIKeyID, tmpl.Bind(FieldAPIKeyID), nil) filter.Term(FieldActive, true, nil) tmpl.MustResolve(root) return tmpl } func prepareFindActiveEnrollmentAPIKeyByPolicyID() *dsl.Tmpl { tmpl := dsl.NewTmpl() root := dsl.NewRoot() filter := root.Query().Bool().Filter() filter.Term(FieldPolicyID, tmpl.Bind(FieldPolicyID), nil) filter.Term(FieldActive, true, nil) tmpl.MustResolve(root) return tmpl } func FindEnrollmentAPIKey(ctx context.Context, bulker bulk.Bulk, tmpl *dsl.Tmpl, field string, id string) (rec model.EnrollmentAPIKey, err error) { return findEnrollmentAPIKey(ctx, bulker, FleetEnrollmentAPIKeys, tmpl, field, id) } func findEnrollmentAPIKey(ctx context.Context, bulker bulk.Bulk, index string, tmpl *dsl.Tmpl, field string, id string) (model.EnrollmentAPIKey, error) { var rec model.EnrollmentAPIKey res, err := SearchWithOneParam(ctx, bulker, tmpl, index, field, id) if err != nil { return rec, err } sz := len(res.Hits) if sz != 1 { return rec, fmt.Errorf("hit count mismatch %v", sz) } err = res.Hits[0].Unmarshal(&rec) return rec, err } func FindEnrollmentAPIKeys(ctx context.Context, bulker bulk.Bulk, tmpl *dsl.Tmpl, field string, id string) ([]model.EnrollmentAPIKey, error) { return findEnrollmentAPIKeys(ctx, bulker, FleetEnrollmentAPIKeys, tmpl, field, id) } func findEnrollmentAPIKeys(ctx context.Context, bulker bulk.Bulk, index string, tmpl *dsl.Tmpl, field string, id string) ([]model.EnrollmentAPIKey, error) { res, err := SearchWithOneParam(ctx, bulker, tmpl, index, field, id) if err != nil { return nil, err } recs := make([]model.EnrollmentAPIKey, len(res.Hits)) for i := 0; i < len(res.Hits); i++ { if err := res.Hits[i].Unmarshal(&recs[i]); err != nil { return nil, err } } return recs, nil } // CreateEnrollmentAPIKey creates a new enrollment API key func CreateEnrollmentAPIKey(ctx context.Context, bulker bulk.Bulk, key model.EnrollmentAPIKey, opt ...Option) (string, error) { o := newOption(FleetEnrollmentAPIKeys, opt...) data, err := json.Marshal(&key) if err != nil { return "", err } return bulker.Create(ctx, o.indexName, "", data, bulk.WithRefresh()) }