Skip to content

Commit 19226f5

Browse files
authored
fix: Check for platform project existence on CLI (#3137)
Signed-off-by: Ulysses Domiciano Souza <[email protected]>
1 parent 439f1fc commit 19226f5

File tree

2 files changed

+39
-10
lines changed

2 files changed

+39
-10
lines changed

pkg/cli/create_helm.go

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,17 @@ import (
2323
"github.com/loft-sh/log"
2424
"github.com/loft-sh/log/survey"
2525
"github.com/loft-sh/log/terminal"
26+
"golang.org/x/mod/semver"
27+
corev1 "k8s.io/api/core/v1"
28+
kerrors "k8s.io/apimachinery/pkg/api/errors"
29+
"k8s.io/apimachinery/pkg/api/resource"
30+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
31+
"k8s.io/apimachinery/pkg/util/wait"
32+
"k8s.io/apimachinery/pkg/version"
33+
"k8s.io/client-go/kubernetes"
34+
"k8s.io/client-go/tools/clientcmd"
35+
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
36+
2637
"github.com/loft-sh/vcluster/config"
2738
"github.com/loft-sh/vcluster/config/legacyconfig"
2839
"github.com/loft-sh/vcluster/pkg/cli/find"
@@ -43,16 +54,6 @@ import (
4354
"github.com/loft-sh/vcluster/pkg/util/clihelper"
4455
"github.com/loft-sh/vcluster/pkg/util/helmdownloader"
4556
"github.com/loft-sh/vcluster/pkg/util/namespaces"
46-
"golang.org/x/mod/semver"
47-
corev1 "k8s.io/api/core/v1"
48-
kerrors "k8s.io/apimachinery/pkg/api/errors"
49-
"k8s.io/apimachinery/pkg/api/resource"
50-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
51-
"k8s.io/apimachinery/pkg/util/wait"
52-
"k8s.io/apimachinery/pkg/version"
53-
"k8s.io/client-go/kubernetes"
54-
"k8s.io/client-go/tools/clientcmd"
55-
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
5657
)
5758

5859
// CreateOptions holds the create cmd options
@@ -363,6 +364,10 @@ func CreateHelm(ctx context.Context, options *CreateOptions, globalFlags *flags.
363364

364365
// create platform secret
365366
if cmd.Add {
367+
err = pkgconfig.ValidatePlatformProject(ctx, vClusterConfig, cmd.LoadedConfig(cmd.log))
368+
if err != nil {
369+
return err
370+
}
366371
err = cmd.addVCluster(ctx, vClusterName, vClusterConfig)
367372
if err != nil {
368373
return err

pkg/config/validation.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package config
22

33
import (
4+
"context"
45
"crypto/x509"
56
"errors"
67
"fmt"
@@ -11,10 +12,14 @@ import (
1112

1213
"github.com/ghodss/yaml"
1314
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
15+
kerrors "k8s.io/apimachinery/pkg/api/errors"
1416
"k8s.io/apimachinery/pkg/api/validation"
17+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1518

1619
"github.com/loft-sh/vcluster/config"
20+
cliconfig "github.com/loft-sh/vcluster/pkg/cli/config"
1721
"github.com/loft-sh/vcluster/pkg/constants"
22+
"github.com/loft-sh/vcluster/pkg/platform"
1823
"github.com/loft-sh/vcluster/pkg/util/namespaces"
1924
"github.com/loft-sh/vcluster/pkg/util/toleration"
2025
)
@@ -268,6 +273,25 @@ func validatePatches(patchesValidation ...patchesValidation) error {
268273
return nil
269274
}
270275

276+
func ValidatePlatformProject(ctx context.Context, config *config.Config, loadedConfig *cliconfig.CLI) error {
277+
platformConfig, err := config.GetPlatformConfig()
278+
if err != nil {
279+
return fmt.Errorf("get platform config: %w", err)
280+
}
281+
if platformConfig.Project != "" {
282+
management, err := platform.NewClientFromConfig(loadedConfig).Management()
283+
if err != nil {
284+
return err
285+
}
286+
_, err = management.Loft().ManagementV1().Projects().Get(ctx, platformConfig.Project, metav1.GetOptions{})
287+
if kerrors.IsNotFound(err) {
288+
return fmt.Errorf("platform project %q not found", platformConfig.Project)
289+
}
290+
}
291+
292+
return nil
293+
}
294+
271295
func ValidateSyncFromHostClasses(fromHost config.SyncFromHost) error {
272296
errorFn := func(sls config.StandardLabelSelector, path string) error {
273297
if _, err := sls.ToSelector(); err != nil {

0 commit comments

Comments
 (0)