dev/citools/logsdb.go (41 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 citools
import (
"fmt"
"github.com/Masterminds/semver/v3"
)
var (
semver8_17_0 = semver.MustParse("8.17.0")
semver8_19_99 = semver.MustParse("8.19.99")
semver9_99_99 = semver.MustParse("9.99.99")
)
func IsVersionLessThanLogsDBGA(version *semver.Version) bool {
return version.LessThan(semver8_17_0)
}
func packageKibanaConstraint(path string) (*semver.Constraints, error) {
manifest, err := readPackageManifest(path)
if err != nil {
return nil, err
}
kibanaConstraint := manifest.Conditions.Kibana.Version
if kibanaConstraint == "" {
return nil, nil
}
constraints, err := semver.NewConstraint(kibanaConstraint)
if err != nil {
return nil, err
}
return constraints, nil
}
func IsLogsDBSupportedInPackage(path string) (bool, error) {
constraint, err := packageKibanaConstraint(path)
if err != nil {
return false, fmt.Errorf("failed to read kibana.constraint fro mmanifest: %w", err)
}
if constraint == nil {
// Package does not contain any kibana.version
return true, nil
}
// Ensure that the package supports LogsDB mode
// It is not used here "semver8_17_0" since a constraint like "^8.18.0 || ^9.0.0" would return false
if constraint.Check(semver8_19_99) || constraint.Check(semver9_99_99) {
return true, nil
}
return false, nil
}