diff --git a/cmd/sealer/cmd/cluster/run.go b/cmd/sealer/cmd/cluster/run.go index 049d004a446..ee106529fd8 100644 --- a/cmd/sealer/cmd/cluster/run.go +++ b/cmd/sealer/cmd/cluster/run.go @@ -187,6 +187,7 @@ func runWithClusterfile(clusterFile string, runFlags *types.RunFlags) error { } cf.SetCluster(*cluster) + imageName := cluster.Spec.Image imageEngine, err := imageengine.NewImageEngine(options.EngineGlobalConfigurations{}) if err != nil { @@ -219,6 +220,11 @@ func runWithClusterfile(clusterFile string, runFlags *types.RunFlags) error { } func createNewCluster(imageEngine imageengine.Interface, cf clusterfile.Interface, imageSpec *imagev1.ImageSpec, mode string) error { + //check cluster + if err := checkClusterIsExists(cf); err != nil { + return err + } + cluster := cf.GetCluster() infraDriver, err := infradriver.NewInfraDriver(&cluster) if err != nil { @@ -416,3 +422,16 @@ func installApplication(appImageName string, envs []string, app *v2.Application, return nil } + +func checkClusterIsExists(cf clusterfile.Interface) error { + rawCluster := cf.GetCluster() + file, err := clusterfile.NewClusterFile(nil) + if err == nil { + cluster := file.GetCluster() + if cluster.Spec.Image != rawCluster.Spec.Image { + return fmt.Errorf("the cluster image already exists, please uninstall the current cluster and install another version of the cluster image") + } + return fmt.Errorf("this cluster image has already been installed, please do not repeat the operation") + } + return nil +}