Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package okteto for openSUSE:Factory checked in at 2022-03-13 20:25:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/okteto (Old) and /work/SRC/openSUSE:Factory/.okteto.new.25692 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "okteto" Sun Mar 13 20:25:36 2022 rev:7 rq:961462 version:1.15.7 Changes: -------- --- /work/SRC/openSUSE:Factory/okteto/okteto.changes 2022-03-04 00:18:24.996295039 +0100 +++ /work/SRC/openSUSE:Factory/.okteto.new.25692/okteto.changes 2022-03-13 20:25:55.083708343 +0100 @@ -1,0 +2,7 @@ +Sat Mar 12 20:33:27 UTC 2022 - [email protected] + +- Update to version 1.15.7: + * Remove code to delete deprecated volume #2327 + * Warning if a service/volume in a stack already belongs to a different stack + +------------------------------------------------------------------- Old: ---- okteto-1.15.6.tar.gz New: ---- okteto-1.15.7.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ okteto.spec ++++++ --- /var/tmp/diff_new_pack.8Zeqzh/_old 2022-03-13 20:25:56.127709571 +0100 +++ /var/tmp/diff_new_pack.8Zeqzh/_new 2022-03-13 20:25:56.131709576 +0100 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: okteto -Version: 1.15.6 +Version: 1.15.7 Release: 0 Summary: Develop your applications directly in your Kubernetes Cluster License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.8Zeqzh/_old 2022-03-13 20:25:56.171709623 +0100 +++ /var/tmp/diff_new_pack.8Zeqzh/_new 2022-03-13 20:25:56.175709628 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/okteto/okteto</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">1.15.6</param> + <param name="revision">1.15.7</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> </service> @@ -15,7 +15,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="disabled"> - <param name="archive">okteto-1.15.6.tar.gz</param> + <param name="archive">okteto-1.15.7.tar.gz</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.8Zeqzh/_old 2022-03-13 20:25:56.199709656 +0100 +++ /var/tmp/diff_new_pack.8Zeqzh/_new 2022-03-13 20:25:56.203709660 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/okteto/okteto</param> - <param name="changesrevision">19045494c4b6ea30f91c1b0280e0f30bdcbec6d2</param></service></servicedata> + <param name="changesrevision">d551675a954c5625f2c2d7b344d1f880cdf197de</param></service></servicedata> (No newline at EOF) ++++++ okteto-1.15.6.tar.gz -> okteto-1.15.7.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteto-1.15.6/cmd/down.go new/okteto-1.15.7/cmd/down.go --- old/okteto-1.15.6/cmd/down.go 2022-03-02 13:29:22.000000000 +0100 +++ new/okteto-1.15.7/cmd/down.go 2022-03-12 20:51:52.000000000 +0100 @@ -34,7 +34,6 @@ "github.com/okteto/okteto/pkg/okteto" "github.com/okteto/okteto/pkg/syncthing" "github.com/spf13/cobra" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // Down deactivates the development container @@ -129,10 +128,6 @@ return } - if err := c.CoreV1().PersistentVolumeClaims(dev.Namespace).Delete(ctx, fmt.Sprintf(model.DeprecatedOktetoVolumeNameTemplate, dev.Name), metav1.DeleteOptions{}); err != nil { - oktetoLog.Infof("error deleting deprecated volume: %v", err) - } - spinner.Stop() oktetoLog.Success("Development container deactivated") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteto-1.15.6/cmd/up/up.go new/okteto-1.15.7/cmd/up/up.go --- old/okteto-1.15.6/cmd/up/up.go 2022-03-02 13:29:22.000000000 +0100 +++ new/okteto-1.15.7/cmd/up/up.go 2022-03-12 20:51:52.000000000 +0100 @@ -39,7 +39,6 @@ "github.com/okteto/okteto/pkg/registry" "github.com/okteto/okteto/pkg/ssh" "github.com/okteto/okteto/pkg/syncthing" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/spf13/cobra" ) @@ -182,9 +181,7 @@ return err } } - if err := up.Client.CoreV1().PersistentVolumeClaims(dev.Namespace).Delete(ctx, fmt.Sprintf(model.DeprecatedOktetoVolumeNameTemplate, dev.Name), metav1.DeleteOptions{}); err != nil { - oktetoLog.Infof("error deleting deprecated volume: %v", err) - } + return err }, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteto-1.15.6/pkg/cmd/stack/deploy.go new/okteto-1.15.7/pkg/cmd/stack/deploy.go --- old/okteto-1.15.6/pkg/cmd/stack/deploy.go 2022-03-02 13:29:22.000000000 +0100 +++ new/okteto-1.15.7/pkg/cmd/stack/deploy.go 2022-03-12 20:51:52.000000000 +0100 @@ -122,13 +122,10 @@ } for name := range s.Volumes { - if err := deployVolume(ctx, name, s, c); err != nil { + if err := deployVolume(ctx, name, s, c, spinner); err != nil { exit <- err return } - spinner.Stop() - oktetoLog.Success("Created volume '%s'", name) - spinner.Start() } if err := deployServices(ctx, s, c, config, spinner, options); err != nil { @@ -142,13 +139,10 @@ return } for name := range s.Endpoints { - if err := deployIngress(ctx, name, s, iClient); err != nil { + if err := deployIngress(ctx, name, s, iClient, spinner); err != nil { exit <- err return } - spinner.Stop() - oktetoLog.Success("Created endpoint '%s'", name) - spinner.Start() } if err := destroyServicesNotInStack(ctx, spinner, s, c); err != nil { @@ -224,21 +218,30 @@ } func deploySvc(ctx context.Context, stack *model.Stack, svcName string, client kubernetes.Interface, spinner *utils.Spinner) error { + isNew := false + var err error if stack.Services[svcName].IsJob() { - if err := deployJob(ctx, svcName, stack, client); err != nil { - return err - } + isNew, err = deployJob(ctx, svcName, stack, client, spinner) } else if len(stack.Services[svcName].Volumes) == 0 { - if err := deployDeployment(ctx, svcName, stack, client); err != nil { - return err - } + isNew, err = deployDeployment(ctx, svcName, stack, client, spinner) } else { - if err := deployStatefulSet(ctx, svcName, stack, client); err != nil { - return err - } + isNew, err = deployStatefulSet(ctx, svcName, stack, client, spinner) } spinner.Stop() - oktetoLog.Success("Deployed service '%s'", svcName) + if err != nil { + if strings.Contains(err.Error(), "skipping ") { + oktetoLog.Warning(err.Error()) + spinner.Start() + return nil + } + spinner.Start() + return err + } + if isNew { + oktetoLog.Success("Service '%s' created", svcName) + } else { + oktetoLog.Success("Service '%s' updated", svcName) + } spinner.Start() return nil } @@ -374,19 +377,19 @@ return false } -func deployDeployment(ctx context.Context, svcName string, s *model.Stack, c kubernetes.Interface) error { +func deployDeployment(ctx context.Context, svcName string, s *model.Stack, c kubernetes.Interface, spinner *utils.Spinner) (bool, error) { d := translateDeployment(svcName, s) old, err := c.AppsV1().Deployments(s.Namespace).Get(ctx, svcName, metav1.GetOptions{}) if err != nil && !oktetoErrors.IsNotFound(err) { - return fmt.Errorf("error getting deployment of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error getting deployment of service '%s': %s", svcName, err.Error()) } isNewDeployment := old == nil || old.Name == "" if !isNewDeployment { if old.Labels[model.StackNameLabel] == "" { - return fmt.Errorf("name collision: the deployment '%s' was running before deploying your stack", svcName) + return false, fmt.Errorf("skipping deploy of deployment '%s' due to name collision with pre-existing deployment", svcName) } if old.Labels[model.StackNameLabel] != s.Name { - return fmt.Errorf("name collision: the deployment '%s' belongs to the stack '%s'", svcName, old.Labels[model.StackNameLabel]) + return false, fmt.Errorf("skipping deploy of deployment '%s' due to name collision with deployment in stack '%s'", svcName, old.Labels[model.StackNameLabel]) } if v, ok := old.Labels[model.DeployedByLabel]; ok { d.Labels[model.DeployedByLabel] = v @@ -395,78 +398,80 @@ if _, err := deployments.Deploy(ctx, d, c); err != nil { if isNewDeployment { - return fmt.Errorf("error creating deployment of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error creating deployment of service '%s': %s", svcName, err.Error()) } - return fmt.Errorf("error updating deployment of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error updating deployment of service '%s': %s", svcName, err.Error()) } - return nil + return isNewDeployment, nil } -func deployStatefulSet(ctx context.Context, svcName string, s *model.Stack, c kubernetes.Interface) error { +func deployStatefulSet(ctx context.Context, svcName string, s *model.Stack, c kubernetes.Interface, spinner *utils.Spinner) (bool, error) { sfs := translateStatefulSet(svcName, s) old, err := c.AppsV1().StatefulSets(s.Namespace).Get(ctx, svcName, metav1.GetOptions{}) if err != nil && !oktetoErrors.IsNotFound(err) { - return fmt.Errorf("error getting statefulset of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error getting statefulset of service '%s': %s", svcName, err.Error()) } if old == nil || old.Name == "" { if _, err := statefulsets.Deploy(ctx, sfs, c); err != nil { - return fmt.Errorf("error creating statefulset of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error creating statefulset of service '%s': %s", svcName, err.Error()) } - } else { - if old.Labels[model.StackNameLabel] == "" { - return fmt.Errorf("name collision: the statefulset '%s' was running before deploying your stack", svcName) - } - if old.Labels[model.StackNameLabel] != s.Name { - return fmt.Errorf("name collision: the statefulset '%s' belongs to the stack '%s'", svcName, old.Labels[model.StackNameLabel]) + return true, nil + } + + if old.Labels[model.StackNameLabel] == "" { + return false, fmt.Errorf("skipping deploy of statefulset '%s' due to name collision with pre-existing statefulset", svcName) + } + if old.Labels[model.StackNameLabel] != s.Name { + return false, fmt.Errorf("skipping deploy of statefulset '%s' due to name collision with statefulset in stack '%s'", svcName, old.Labels[model.StackNameLabel]) + } + if v, ok := old.Labels[model.DeployedByLabel]; ok { + sfs.Labels[model.DeployedByLabel] = v + } + if _, err := statefulsets.Deploy(ctx, sfs, c); err != nil { + if !strings.Contains(err.Error(), "Forbidden: updates to statefulset spec") { + return false, fmt.Errorf("error updating statefulset of service '%s': %s", svcName, err.Error()) } - if v, ok := old.Labels[model.DeployedByLabel]; ok { - sfs.Labels[model.DeployedByLabel] = v + if err := statefulsets.Destroy(ctx, sfs.Name, sfs.Namespace, c); err != nil { + return false, fmt.Errorf("error updating statefulset of service '%s': %s", svcName, err.Error()) } if _, err := statefulsets.Deploy(ctx, sfs, c); err != nil { - if !strings.Contains(err.Error(), "Forbidden: updates to statefulset spec") { - return fmt.Errorf("error updating statefulset of service '%s': %s", svcName, err.Error()) - } - if err := statefulsets.Destroy(ctx, sfs.Name, sfs.Namespace, c); err != nil { - return fmt.Errorf("error updating statefulset of service '%s': %s", svcName, err.Error()) - } - if _, err := statefulsets.Deploy(ctx, sfs, c); err != nil { - return fmt.Errorf("error updating statefulset of service '%s': %s", svcName, err.Error()) - } + return false, fmt.Errorf("error updating statefulset of service '%s': %s", svcName, err.Error()) } } - return nil + + return false, nil } -func deployJob(ctx context.Context, svcName string, s *model.Stack, c kubernetes.Interface) error { +func deployJob(ctx context.Context, svcName string, s *model.Stack, c kubernetes.Interface, spinner *utils.Spinner) (bool, error) { job := translateJob(svcName, s) old, err := c.BatchV1().Jobs(s.Namespace).Get(ctx, svcName, metav1.GetOptions{}) if err != nil && !oktetoErrors.IsNotFound(err) { - return fmt.Errorf("error getting job of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error getting job of service '%s': %s", svcName, err.Error()) } isNewJob := old == nil || old.Name == "" if !isNewJob { if old.Labels[model.StackNameLabel] == "" { - return fmt.Errorf("name collision: the job '%s' was running before deploying your stack", svcName) + return false, fmt.Errorf("skipping deploy of job '%s' due to name collision with pre-existing job", svcName) } if old.Labels[model.StackNameLabel] != s.Name { - return fmt.Errorf("name collision: the job '%s' belongs to the stack '%s'", svcName, old.Labels[model.StackNameLabel]) + return false, fmt.Errorf("skipping deploy of job '%s' due to name collision with job in stack '%s'", svcName, old.Labels[model.StackNameLabel]) } } if isNewJob { if err := jobs.Create(ctx, job, c); err != nil { - return fmt.Errorf("error creating job of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error creating job of service '%s': %s", svcName, err.Error()) } } else { if err := jobs.Update(ctx, job, c); err != nil { - return fmt.Errorf("error updating job of service '%s': %s", svcName, err.Error()) + return false, fmt.Errorf("error updating job of service '%s': %s", svcName, err.Error()) } } - return nil + return isNewJob, nil } -func deployVolume(ctx context.Context, volumeName string, s *model.Stack, c kubernetes.Interface) error { +func deployVolume(ctx context.Context, volumeName string, s *model.Stack, c kubernetes.Interface, spinner *utils.Spinner) error { pvc := translatePersistentVolumeClaim(volumeName, s) old, err := c.CoreV1().PersistentVolumeClaims(s.Namespace).Get(ctx, pvc.Name, metav1.GetOptions{}) @@ -477,12 +482,21 @@ if err := volumes.Create(ctx, &pvc, c); err != nil { return fmt.Errorf("error creating volume '%s': %s", pvc.Name, err.Error()) } + spinner.Stop() + oktetoLog.Success("Volume '%s' created", volumeName) + spinner.Start() } else { if old.Labels[model.StackNameLabel] == "" { - return fmt.Errorf("name collision: the volume '%s' was running before deploying your stack", pvc.Name) + spinner.Stop() + oktetoLog.Warning("skipping creation of volume '%s' due to name collision with pre-existing volume", pvc.Name) + spinner.Start() + return nil } if old.Labels[model.StackNameLabel] != s.Name { - return fmt.Errorf("name collision: the volume '%s' belongs to the stack '%s'", pvc.Name, old.Labels[model.StackNameLabel]) + spinner.Stop() + oktetoLog.Warning("skipping creation of volume '%s' due to name collision with volume in stack '%s'", pvc.Name, old.Labels[model.StackNameLabel]) + spinner.Start() + return nil } old.Spec.Resources.Requests["storage"] = pvc.Spec.Resources.Requests["storage"] @@ -502,11 +516,14 @@ } return fmt.Errorf("error updating volume '%s': %s", old.Name, err.Error()) } + spinner.Stop() + oktetoLog.Success("Volume '%s' updated", volumeName) + spinner.Start() } return nil } -func deployIngress(ctx context.Context, ingressName string, s *model.Stack, c *ingresses.Client) error { +func deployIngress(ctx context.Context, ingressName string, s *model.Stack, c *ingresses.Client, spinner *utils.Spinner) error { iModel := &ingresses.Ingress{ V1: translateIngressV1(ingressName, s), V1Beta1: translateIngressV1Beta1(ingressName, s), @@ -516,18 +533,35 @@ if !oktetoErrors.IsNotFound(err) { return fmt.Errorf("error getting ingress '%s': %s", ingressName, err.Error()) } - return c.Create(ctx, iModel) + if err := c.Create(ctx, iModel); err != nil { + return err + } + spinner.Stop() + oktetoLog.Success("Endpoint '%s' created", ingressName) + spinner.Start() } if old.GetLabels()[model.StackNameLabel] == "" { - return fmt.Errorf("name collision: the ingress '%s' was running before deploying your stack", ingressName) + spinner.Stop() + oktetoLog.Warning("skipping deploy of endpoint '%s' due to name collision with pre-existing endpoint", ingressName) + spinner.Start() + return nil } if old.GetLabels()[model.StackNameLabel] != s.Name { - return fmt.Errorf("name collision: the endpoint '%s' belongs to the stack '%s'", ingressName, old.GetLabels()[model.StackNameLabel]) + spinner.Stop() + oktetoLog.Warning("skipping creation of endpoint '%s' due to name collision with endpoint in stack '%s'", ingressName, old.GetLabels()[model.StackNameLabel]) + spinner.Start() + return nil } - return c.Update(ctx, iModel) + if err := c.Update(ctx, iModel); err != nil { + return err + } + spinner.Stop() + oktetoLog.Success("Endpoint '%s' updated", ingressName) + spinner.Start() + return nil } func waitForPodsToBeRunning(ctx context.Context, s *model.Stack, c *kubernetes.Clientset) error { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteto-1.15.6/pkg/cmd/stack/deploy_test.go new/okteto-1.15.7/pkg/cmd/stack/deploy_test.go --- old/okteto-1.15.6/pkg/cmd/stack/deploy_test.go 2022-03-02 13:29:22.000000000 +0100 +++ new/okteto-1.15.7/pkg/cmd/stack/deploy_test.go 2022-03-12 20:51:52.000000000 +0100 @@ -129,7 +129,9 @@ } client := fake.NewSimpleClientset() - err := deployDeployment(ctx, "test", stack, client) + spinner := utils.NewSpinner("Starting...") + spinner.Start() + _, err := deployDeployment(ctx, "test", stack, client, spinner) if err != nil { t.Fatal("Not deployed correctly") } @@ -163,7 +165,9 @@ } client := fake.NewSimpleClientset() - err := deployVolume(ctx, "a", stack, client) + spinner := utils.NewSpinner("Starting...") + spinner.Start() + err := deployVolume(ctx, "a", stack, client, spinner) if err != nil { t.Fatal("Not deployed correctly") } @@ -197,7 +201,9 @@ } client := fake.NewSimpleClientset() - err := deployStatefulSet(ctx, "test", stack, client) + spinner := utils.NewSpinner("Starting...") + spinner.Start() + _, err := deployStatefulSet(ctx, "test", stack, client, spinner) if err != nil { t.Fatal("Not deployed correctly") } @@ -222,7 +228,9 @@ } client := fake.NewSimpleClientset() - err := deployJob(ctx, "test", stack, client) + spinner := utils.NewSpinner("Starting...") + spinner.Start() + _, err := deployJob(ctx, "test", stack, client, spinner) if err != nil { t.Fatal("Not deployed correctly") } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okteto-1.15.6/pkg/cmd/stack/destroy.go new/okteto-1.15.7/pkg/cmd/stack/destroy.go --- old/okteto-1.15.6/pkg/cmd/stack/destroy.go 2022-03-02 13:29:22.000000000 +0100 +++ new/okteto-1.15.7/pkg/cmd/stack/destroy.go 2022-03-12 20:51:52.000000000 +0100 @@ -152,7 +152,7 @@ if _, ok := s.Services[dList[i].Name]; ok { oktetoLog.Success("Destroyed previous service '%s'", dList[i].Name) } else { - oktetoLog.Success("Destroyed service '%s'", dList[i].Name) + oktetoLog.Success("Service '%s' destroyed", dList[i].Name) } spinner.Start() } @@ -178,7 +178,7 @@ if _, ok := s.Services[sfsList[i].Name]; ok { oktetoLog.Success("Destroyed previous service '%s'", sfsList[i].Name) } else { - oktetoLog.Success("Destroyed service '%s'", sfsList[i].Name) + oktetoLog.Success("Service '%s' destroyed", sfsList[i].Name) } spinner.Start() } @@ -203,7 +203,7 @@ if _, ok := s.Services[jobsList[i].Name]; ok { oktetoLog.Success("Destroyed previous service '%s'", jobsList[i].Name) } else { - oktetoLog.Success("Destroyed service '%s'", jobsList[i].Name) + oktetoLog.Success("Service '%s' destroyed", jobsList[i].Name) } spinner.Start() } @@ -232,7 +232,7 @@ return fmt.Errorf("error destroying ingress '%s': %s", iList[i].GetName(), err) } spinner.Stop() - oktetoLog.Success("Destroyed endpoint '%s'", iList[i].GetName()) + oktetoLog.Success("Endpoint '%s' destroyed", iList[i].GetName()) spinner.Start() } return nil @@ -267,7 +267,7 @@ return fmt.Errorf("error destroying volume '%s': %s", v.Name, err) } spinner.Stop() - oktetoLog.Success("Destroyed volume '%s'", v.Name) + oktetoLog.Success("Volume '%s' destroyed", v.Name) spinner.Start() } } ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/okteto/vendor.tar.gz /work/SRC/openSUSE:Factory/.okteto.new.25692/vendor.tar.gz differ: char 5, line 1
