From 052e86341f5f75e9a11d189289926489695228fa Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Mon, 18 Jul 2022 17:28:37 +0200 Subject: [PATCH 1/2] Add required subscription on package creation --- cmd/create_package.go | 31 +++++++++++++------ .../packages/archetype/package_manifest.go | 1 + internal/packages/packages.go | 8 ++++- internal/surveyext/default.go | 4 +-- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/cmd/create_package.go b/cmd/create_package.go index f9bfeda6c7..709608f90f 100644 --- a/cmd/create_package.go +++ b/cmd/create_package.go @@ -19,13 +19,14 @@ const createPackageLongDescription = `Use this command to create a new package. The command can bootstrap the first draft of a package using embedded package template and wizard.` type newPackageAnswers struct { - Name string - Version string - Title string - Description string - Categories []string - KibanaVersion string `survey:"kibana_version"` - GithubOwner string `survey:"github_owner"` + Name string + Version string + Title string + Description string + Categories []string + KibanaVersion string `survey:"kibana_version"` + ElasticSubscription string `survey:"elastic_subscription"` + GithubOwner string `survey:"github_owner"` } func createPackageCommandAction(cmd *cobra.Command, args []string) error { @@ -81,10 +82,19 @@ func createPackageCommandAction(cmd *cobra.Command, args []string) error { Name: "kibana_version", Prompt: &survey.Input{ Message: "Kibana version constraint:", - Default: surveyext.DefaultConstraintValue(), + Default: surveyext.DefaultKibanaVersionConditionValue(), }, Validate: survey.ComposeValidators(survey.Required, surveyext.ConstraintValidator), }, + { + Name: "elastic_subscription", + Prompt: &survey.Select{ + Message: "Required Elastic subscription:", + Options: []string{"basic", "gold", "platinum", "enterprise"}, + Default: "basic", + }, + Validate: survey.Required, + }, { Name: "github_owner", Prompt: &survey.Input{ @@ -122,12 +132,15 @@ func createPackageDescriptorFromAnswers(answers newPackageAnswers) archetype.Pac Kibana: packages.KibanaConditions{ Version: answers.KibanaVersion, }, + Elastic: packages.ElasticConditions{ + Subscription: answers.ElasticSubscription, + }, }, Owner: packages.Owner{ Github: answers.GithubOwner, }, + License: answers.ElasticSubscription, Description: answers.Description, - License: "basic", Categories: answers.Categories, }, } diff --git a/internal/packages/archetype/package_manifest.go b/internal/packages/archetype/package_manifest.go index 7c1c1bbd35..db8e7d2abe 100644 --- a/internal/packages/archetype/package_manifest.go +++ b/internal/packages/archetype/package_manifest.go @@ -16,6 +16,7 @@ categories:{{range $category := .Manifest.Categories}} {{- end}} conditions: kibana.version: "{{.Manifest.Conditions.Kibana.Version}}" + elastic.subscription: "{{.Manifest.Conditions.Elastic.Subscription}}" screenshots: - src: /img/sample-screenshot.png title: Sample screenshot diff --git a/internal/packages/packages.go b/internal/packages/packages.go index 87dbf25752..e58df066ca 100644 --- a/internal/packages/packages.go +++ b/internal/packages/packages.go @@ -78,9 +78,15 @@ type KibanaConditions struct { Version string `config:"version" json:"version" yaml:"version"` } +// ElasticConditions defines conditions related to Elastic subscriptions or partnerships. +type ElasticConditions struct { + Subscription string `config:"subscription" json:"subscription" yaml:"subscription"` +} + // Conditions define requirements for different parts of the Elastic stack. type Conditions struct { - Kibana KibanaConditions `config:"kibana" json:"kibana" yaml:"kibana"` + Kibana KibanaConditions `config:"kibana" json:"kibana" yaml:"kibana"` + Elastic ElasticConditions `config:"elastic" json:"elastic" yaml:"elastic"` } // PolicyTemplate is a configuration of inputs responsible for collecting log or metric data. diff --git a/internal/surveyext/default.go b/internal/surveyext/default.go index 8c7701aa64..76fd9b5cc5 100644 --- a/internal/surveyext/default.go +++ b/internal/surveyext/default.go @@ -10,8 +10,8 @@ import ( "github.com/elastic/elastic-package/internal/install" ) -// DefaultConstraintValue function returns a constraint -func DefaultConstraintValue() string { +// DefaultKibanaVersionConditionValue function returns a constraint +func DefaultKibanaVersionConditionValue() string { ver := semver.MustParse(install.DefaultStackVersion) v, _ := ver.SetPrerelease("") return "^" + v.String() From 5a2c4dd0edf9d17ffa25e0f29dc31b1f21196dec Mon Sep 17 00:00:00 2001 From: Jaime Soriano Pastor Date: Mon, 18 Jul 2022 21:56:17 +0200 Subject: [PATCH 2/2] Fix test --- internal/packages/archetype/package_test.go | 3 +++ internal/surveyext/default_test.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/packages/archetype/package_test.go b/internal/packages/archetype/package_test.go index 13da2915ac..0d4f8376de 100644 --- a/internal/packages/archetype/package_test.go +++ b/internal/packages/archetype/package_test.go @@ -63,6 +63,9 @@ func createPackageDescriptorForTest() PackageDescriptor { Kibana: packages.KibanaConditions{ Version: "^7.13.0", }, + Elastic: packages.ElasticConditions{ + Subscription: "basic", + }, }, Owner: packages.Owner{ Github: "mtojek", diff --git a/internal/surveyext/default_test.go b/internal/surveyext/default_test.go index 7886181d5c..4d25d51f7e 100644 --- a/internal/surveyext/default_test.go +++ b/internal/surveyext/default_test.go @@ -13,7 +13,7 @@ import ( ) func TestDefaultConstraintValue(t *testing.T) { - val := DefaultConstraintValue() + val := DefaultKibanaVersionConditionValue() _, err := semver.NewConstraint(val) require.NoError(t, err)