Add the update method
This commit is contained in:
		@@ -112,6 +112,70 @@ func (env *Environemnt) Create(ctx context.Context) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (env *Environemnt) Update(ctx context.Context) error {
 | 
			
		||||
	if err := env.isNsVerified(ctx); err != nil {
 | 
			
		||||
		log.Println("Can't verify ns")
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	env.Controller.GetClient()
 | 
			
		||||
	conf := &rest.Config{
 | 
			
		||||
		Host:        "https://kubernetes.default.svc.cluster.local:443",
 | 
			
		||||
		BearerToken: env.Token,
 | 
			
		||||
		TLSClientConfig: rest.TLSClientConfig{
 | 
			
		||||
			Insecure: true,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	controller, err := ctrl.NewManager(conf, ctrl.Options{})
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	oldEnv := &Environemnt{
 | 
			
		||||
		Controller: env.Controller,
 | 
			
		||||
		UserID:     env.UserID,
 | 
			
		||||
		Token:      env.Token,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := oldEnv.Get(ctx); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Check whter immutable fields are changed
 | 
			
		||||
 | 
			
		||||
	if oldEnv.Data.Provider != env.Data.Provider {
 | 
			
		||||
		return errors.New("provider can't be changed")
 | 
			
		||||
	}
 | 
			
		||||
	if oldEnv.Data.Location != env.Data.Location {
 | 
			
		||||
		return errors.New("location can't be changed")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	vars, err := env.Data.buildVars()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	obj := corev1.ConfigMap{
 | 
			
		||||
		ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
			Name:      env.Data.Name,
 | 
			
		||||
			Namespace: env.UserID,
 | 
			
		||||
			Labels: map[string]string{
 | 
			
		||||
				"component": "bootstrap",
 | 
			
		||||
				"kind":      "environment",
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		Data: map[string]string{
 | 
			
		||||
			"description": env.Data.Description,
 | 
			
		||||
			"vars":        vars,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := kube.Update(ctx, controller.GetClient(), &obj); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
func (env *Environemnt) Delete(ctx context.Context) error {
 | 
			
		||||
	env.Controller.GetClient()
 | 
			
		||||
	conf := &rest.Config{
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,13 @@ func Create(ctx context.Context, client client.Client, obj client.Object, wait b
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Update(ctx context.Context, client client.Client, obj client.Object) error {
 | 
			
		||||
	if err := client.Update(ctx, obj); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SetOwnerRef(ctx context.Context, client client.Client, obj client.Object, owner client.Object) client.Object {
 | 
			
		||||
	apiVersion := fmt.Sprintf("%s/%s", owner.GetObjectKind().GroupVersionKind().Group, owner.GetObjectKind().GroupVersionKind().Version)
 | 
			
		||||
	ownerReference := []metav1.OwnerReference{
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user