From c3e3814720f9503408fe8c68587126702d5291d1 Mon Sep 17 00:00:00 2001 From: Michal Kralik Date: Wed, 13 Sep 2023 09:08:53 +0200 Subject: [PATCH] EVEREST-386: backup name is required (#134) --- cli-tests/tests/flow/validation.spec.ts | 26 +++++++++++++++++++++ pkg/install/operators.go | 30 ++++++++++++++++++------- 2 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 cli-tests/tests/flow/validation.spec.ts diff --git a/cli-tests/tests/flow/validation.spec.ts b/cli-tests/tests/flow/validation.spec.ts new file mode 100644 index 00000000..8bcb4535 --- /dev/null +++ b/cli-tests/tests/flow/validation.spec.ts @@ -0,0 +1,26 @@ +// percona-everest-cli +// Copyright (C) 2023 Percona LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +import { test } from '@fixtures'; + +test.describe('Backups', async () => { + test('backup.name is required', async ({ page, cli, request }) => { + const out = await cli.everestExecSkipWizard(`install operators --backup.enable --monitoring.enable=0 --name=cluster-name`); + + await out.exitCodeEquals(1); + await out.outErrContainsNormalizedMany([ + 'Backup name cannot be empty', + ]); + }); +}); diff --git a/pkg/install/operators.go b/pkg/install/operators.go index 70ab4c3d..2ae6f1f4 100644 --- a/pkg/install/operators.go +++ b/pkg/install/operators.go @@ -186,14 +186,8 @@ func NewOperators(c OperatorsConfig, l *zap.SugaredLogger) (*Operators, error) { // Run runs the operators installation process. func (o *Operators) Run(ctx context.Context) error { - if !o.config.SkipWizard { - if err := o.runWizard(ctx); err != nil { - return err - } - } - - if o.config.Name == "" { - o.config.Name = o.kubeClient.ClusterName() + if err := o.populateConfig(ctx); err != nil { + return err } if o.everestClient == nil { @@ -224,6 +218,26 @@ func (o *Operators) Run(ctx context.Context) error { return o.performProvisioning(ctx) } +func (o *Operators) populateConfig(ctx context.Context) error { + if !o.config.SkipWizard { + if err := o.runWizard(ctx); err != nil { + return err + } + } + + if o.config.Name == "" { + o.config.Name = o.kubeClient.ClusterName() + } + + if o.config.Backup.Enable && o.config.Backup.Name == "" { + l := o.l.WithOptions(zap.AddStacktrace(zap.DPanicLevel)) + l.Error("Backup name cannot be empty if backup is enabled") + return common.ErrExitWithError + } + + return nil +} + func (o *Operators) checkEverestConnection(ctx context.Context) error { o.l.Info("Checking connection to Everest") _, err := o.everestClient.ListMonitoringInstances(ctx)