github.com/olli-ai/jx/v2@v2.0.400-0.20210921045218-14731b4dd448/pkg/environments/devenv.go (about)

     1  package environments
     2  
     3  import (
     4  	"fmt"
     5  
     6  	v1 "github.com/jenkins-x/jx-api/pkg/apis/jenkins.io/v1"
     7  	"github.com/jenkins-x/jx-api/pkg/client/clientset/versioned"
     8  	"github.com/olli-ai/jx/v2/pkg/kube"
     9  	"github.com/pkg/errors"
    10  )
    11  
    12  // ModifyDevEnvironment performs some mutation on the Development environment to modify team settings
    13  func ModifyDevEnvironmentWithNs(jxClient versioned.Interface, ns string,
    14  	fn func(env *v1.Environment) error) error {
    15  	env, err := kube.EnsureDevEnvironmentSetup(jxClient, ns)
    16  	if err != nil {
    17  		return errors.Wrapf(err, "failed to ensure that dev environment is setup for namespace '%s'", ns)
    18  	}
    19  	if env == nil {
    20  		return fmt.Errorf("No Development environment found in namespace %s", ns)
    21  	}
    22  	err = fn(env)
    23  	if err != nil {
    24  		return errors.Wrap(err, "failed to call the callback function for dev environment")
    25  	}
    26  	_, err = jxClient.JenkinsV1().Environments(ns).PatchUpdate(env)
    27  	if err != nil {
    28  		return fmt.Errorf("Failed to update Development environment in namespace %s: %s", ns, err)
    29  	}
    30  	return nil
    31  }