github.com/jaylevin/jenkins-library@v1.230.4/cmd/cloudFoundryDeleteSpace.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/SAP/jenkins-library/pkg/cloudfoundry"
     7  	"github.com/SAP/jenkins-library/pkg/command"
     8  	"github.com/SAP/jenkins-library/pkg/log"
     9  	"github.com/SAP/jenkins-library/pkg/telemetry"
    10  )
    11  
    12  func cloudFoundryDeleteSpace(config cloudFoundryDeleteSpaceOptions, telemetryData *telemetry.CustomData) {
    13  
    14  	c := command.Command{}
    15  
    16  	// reroute command output to logging framework
    17  	c.Stdout(log.Writer())
    18  	c.Stderr(log.Writer())
    19  
    20  	cf := cloudfoundry.CFUtils{
    21  		Exec: &c,
    22  	}
    23  
    24  	err := runCloudFoundryDeleteSpace(&config, telemetryData, cf, &c)
    25  
    26  	if err != nil {
    27  		log.Entry().WithError(err).Fatal("step execution failed")
    28  	}
    29  }
    30  
    31  func runCloudFoundryDeleteSpace(config *cloudFoundryDeleteSpaceOptions, telemetryData *telemetry.CustomData, cf cloudfoundry.CFUtils, s command.ShellRunner) (err error) {
    32  	var c = cf.Exec
    33  
    34  	cfLoginError := s.RunShell("/bin/sh", fmt.Sprintf("yes '' | cf login -a %s -u %s -p %s", config.CfAPIEndpoint, config.Username, config.Password))
    35  
    36  	if cfLoginError != nil {
    37  		return fmt.Errorf("Error while logging in occured: %w", cfLoginError)
    38  	}
    39  
    40  	defer func() {
    41  		logoutErr := cf.Logout()
    42  		if logoutErr != nil {
    43  			err = fmt.Errorf("Error while logging out occured: %w", logoutErr)
    44  		}
    45  	}()
    46  
    47  	log.Entry().Infof("Deleting Cloud Foundry Space: '%s'", config.CfSpace)
    48  
    49  	cfDeleteSpaceScript := []string{"delete-space", config.CfSpace, "-o", config.CfOrg, "-f"}
    50  
    51  	err = c.RunExecutable("cf", cfDeleteSpaceScript...)
    52  
    53  	if err != nil {
    54  		return fmt.Errorf("Deletion of cf space has failed: %w", err)
    55  	}
    56  
    57  	log.Entry().Info("Cloud foundry space has been deleted successfully")
    58  
    59  	return err
    60  }