github.com/SAP/jenkins-library@v1.362.0/cmd/cloudFoundryCreateService.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 "github.com/pkg/errors" 11 ) 12 13 func cloudFoundryCreateService(config cloudFoundryCreateServiceOptions, telemetryData *telemetry.CustomData) { 14 15 cf := cloudfoundry.CFUtils{Exec: &command.Command{}} 16 17 err := runCloudFoundryCreateService(&config, telemetryData, cf) 18 19 if err != nil { 20 log.Entry().WithError(err).Fatal("step execution failed") 21 } 22 23 } 24 25 func runCloudFoundryCreateService(config *cloudFoundryCreateServiceOptions, telemetryData *telemetry.CustomData, cf cloudfoundry.CFUtils) (err error) { 26 var c = cf.Exec 27 28 loginOptions := cloudfoundry.LoginOptions{ 29 CfAPIEndpoint: config.CfAPIEndpoint, 30 CfOrg: config.CfOrg, 31 CfSpace: config.CfSpace, 32 Username: config.Username, 33 Password: config.Password, 34 } 35 36 err = cf.Login(loginOptions) 37 38 if err != nil { 39 return fmt.Errorf("Error while logging in: %w", err) 40 } 41 42 defer func() { 43 logoutErr := cf.Logout() 44 if logoutErr != nil { 45 err = fmt.Errorf("Error while logging out occurred: %w", logoutErr) 46 } 47 }() 48 49 err = cloudFoundryCreateServiceRequest(config, telemetryData, c) 50 51 if err != nil { 52 return fmt.Errorf("Service creation failed: %w", err) 53 } 54 55 log.Entry().Info("Service creation completed successfully") 56 57 return err 58 59 } 60 61 func cloudFoundryCreateServiceRequest(config *cloudFoundryCreateServiceOptions, telemetryData *telemetry.CustomData, c command.ExecRunner) error { 62 var err error 63 log.Entry().Info("Creating Cloud Foundry Service") 64 65 cfCreateServiceScript := []string{"create-service", config.CfService, config.CfServicePlan, config.CfServiceInstanceName} 66 67 if config.CfServiceBroker != "" { 68 cfCreateServiceScript = append(cfCreateServiceScript, "-b", config.CfServiceBroker) 69 } 70 if config.CfCreateServiceConfig != "" { 71 cfCreateServiceScript = append(cfCreateServiceScript, "-c", config.CfCreateServiceConfig) 72 } 73 if config.CfServiceTags != "" { 74 cfCreateServiceScript = append(cfCreateServiceScript, "-t", config.CfServiceTags) 75 } 76 if !config.CfAsync { 77 cfCreateServiceScript = append(cfCreateServiceScript, "--wait") 78 } 79 if config.ServiceManifest != "" && fileExists(config.ServiceManifest) { 80 81 cfCreateServiceScript = []string{"create-service-push", "--no-push", "--service-manifest", config.ServiceManifest} 82 83 if len(config.ManifestVariablesFiles) >= 0 { 84 varFileOpts, err := cloudfoundry.GetVarsFileOptions(config.ManifestVariablesFiles) 85 if err != nil { 86 return errors.Wrapf(err, "Cannot prepare var-file-options: '%v'", config.ManifestVariablesFiles) 87 } 88 cfCreateServiceScript = append(cfCreateServiceScript, varFileOpts...) 89 } 90 if len(config.ManifestVariables) >= 0 { 91 varOptions, err := cloudfoundry.GetVarsOptions(config.ManifestVariables) 92 if err != nil { 93 return errors.Wrapf(err, "Cannot prepare var-options: '%v'", config.ManifestVariables) 94 } 95 cfCreateServiceScript = append(cfCreateServiceScript, varOptions...) 96 } 97 } 98 err = c.RunExecutable("cf", cfCreateServiceScript...) 99 100 if err != nil { 101 return fmt.Errorf("Failed to Create Service: %w", err) 102 } 103 return nil 104 }