github.com/jaylevin/jenkins-library@v1.230.4/cmd/apiProxyUpload_generated.go (about) 1 // Code generated by piper's step-generator. DO NOT EDIT. 2 3 package cmd 4 5 import ( 6 "fmt" 7 "os" 8 "time" 9 10 "github.com/SAP/jenkins-library/pkg/config" 11 "github.com/SAP/jenkins-library/pkg/log" 12 "github.com/SAP/jenkins-library/pkg/splunk" 13 "github.com/SAP/jenkins-library/pkg/telemetry" 14 "github.com/SAP/jenkins-library/pkg/validation" 15 "github.com/spf13/cobra" 16 ) 17 18 type apiProxyUploadOptions struct { 19 APIServiceKey string `json:"apiServiceKey,omitempty"` 20 FilePath string `json:"filePath,omitempty"` 21 } 22 23 // ApiProxyUploadCommand Upload an api proxy artifact in to the API Portal 24 func ApiProxyUploadCommand() *cobra.Command { 25 const STEP_NAME = "apiProxyUpload" 26 27 metadata := apiProxyUploadMetadata() 28 var stepConfig apiProxyUploadOptions 29 var startTime time.Time 30 var logCollector *log.CollectorHook 31 var splunkClient *splunk.Splunk 32 telemetryClient := &telemetry.Telemetry{} 33 34 var createApiProxyUploadCmd = &cobra.Command{ 35 Use: STEP_NAME, 36 Short: "Upload an api proxy artifact in to the API Portal", 37 Long: `With this step you can upload an api proxy artifact in to the API Portal using the OData API. 38 Learn more about the SAP API Management API for uploading an api proxy artifact [here](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/e26b3320cd534ae4bc743af8013a8abb.html).`, 39 PreRunE: func(cmd *cobra.Command, _ []string) error { 40 startTime = time.Now() 41 log.SetStepName(STEP_NAME) 42 log.SetVerbose(GeneralConfig.Verbose) 43 44 GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens) 45 46 path, _ := os.Getwd() 47 fatalHook := &log.FatalHook{CorrelationID: GeneralConfig.CorrelationID, Path: path} 48 log.RegisterHook(fatalHook) 49 50 err := PrepareConfig(cmd, &metadata, STEP_NAME, &stepConfig, config.OpenPiperFile) 51 if err != nil { 52 log.SetErrorCategory(log.ErrorConfiguration) 53 return err 54 } 55 log.RegisterSecret(stepConfig.APIServiceKey) 56 57 if len(GeneralConfig.HookConfig.SentryConfig.Dsn) > 0 { 58 sentryHook := log.NewSentryHook(GeneralConfig.HookConfig.SentryConfig.Dsn, GeneralConfig.CorrelationID) 59 log.RegisterHook(&sentryHook) 60 } 61 62 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 63 splunkClient = &splunk.Splunk{} 64 logCollector = &log.CollectorHook{CorrelationID: GeneralConfig.CorrelationID} 65 log.RegisterHook(logCollector) 66 } 67 68 validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages()) 69 if err != nil { 70 return err 71 } 72 if err = validation.ValidateStruct(stepConfig); err != nil { 73 log.SetErrorCategory(log.ErrorConfiguration) 74 return err 75 } 76 77 return nil 78 }, 79 Run: func(_ *cobra.Command, _ []string) { 80 stepTelemetryData := telemetry.CustomData{} 81 stepTelemetryData.ErrorCode = "1" 82 handler := func() { 83 config.RemoveVaultSecretFiles() 84 stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds()) 85 stepTelemetryData.ErrorCategory = log.GetErrorCategory().String() 86 stepTelemetryData.PiperCommitHash = GitCommit 87 telemetryClient.SetData(&stepTelemetryData) 88 telemetryClient.Send() 89 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 90 splunkClient.Send(telemetryClient.GetData(), logCollector) 91 } 92 } 93 log.DeferExitHandler(handler) 94 defer handler() 95 telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME) 96 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 97 splunkClient.Initialize(GeneralConfig.CorrelationID, 98 GeneralConfig.HookConfig.SplunkConfig.Dsn, 99 GeneralConfig.HookConfig.SplunkConfig.Token, 100 GeneralConfig.HookConfig.SplunkConfig.Index, 101 GeneralConfig.HookConfig.SplunkConfig.SendLogs) 102 } 103 apiProxyUpload(stepConfig, &stepTelemetryData) 104 stepTelemetryData.ErrorCode = "0" 105 log.Entry().Info("SUCCESS") 106 }, 107 } 108 109 addApiProxyUploadFlags(createApiProxyUploadCmd, &stepConfig) 110 return createApiProxyUploadCmd 111 } 112 113 func addApiProxyUploadFlags(cmd *cobra.Command, stepConfig *apiProxyUploadOptions) { 114 cmd.Flags().StringVar(&stepConfig.APIServiceKey, "apiServiceKey", os.Getenv("PIPER_apiServiceKey"), "Service key JSON string to access the API Management Runtime service instance of plan 'api'") 115 cmd.Flags().StringVar(&stepConfig.FilePath, "filePath", os.Getenv("PIPER_filePath"), "Specifies api proxy zip artifact relative file path") 116 117 cmd.MarkFlagRequired("apiServiceKey") 118 cmd.MarkFlagRequired("filePath") 119 } 120 121 // retrieve step metadata 122 func apiProxyUploadMetadata() config.StepData { 123 var theMetaData = config.StepData{ 124 Metadata: config.StepMetadata{ 125 Name: "apiProxyUpload", 126 Aliases: []config.Alias{}, 127 Description: "Upload an api proxy artifact in to the API Portal", 128 }, 129 Spec: config.StepSpec{ 130 Inputs: config.StepInputs{ 131 Secrets: []config.StepSecrets{ 132 {Name: "apimApiServiceKeyCredentialsId", Description: "Jenkins secret text credential ID containing the service key to the API Management Runtime service instance of plan 'api'", Type: "jenkins"}, 133 }, 134 Parameters: []config.StepParameters{ 135 { 136 Name: "apiServiceKey", 137 ResourceRef: []config.ResourceReference{ 138 { 139 Name: "apimApiServiceKeyCredentialsId", 140 Param: "apiServiceKey", 141 Type: "secret", 142 }, 143 }, 144 Scope: []string{"PARAMETERS"}, 145 Type: "string", 146 Mandatory: true, 147 Aliases: []config.Alias{}, 148 Default: os.Getenv("PIPER_apiServiceKey"), 149 }, 150 { 151 Name: "filePath", 152 ResourceRef: []config.ResourceReference{}, 153 Scope: []string{"PARAMETERS", "STAGES", "STEPS"}, 154 Type: "string", 155 Mandatory: true, 156 Aliases: []config.Alias{}, 157 Default: os.Getenv("PIPER_filePath"), 158 }, 159 }, 160 }, 161 }, 162 } 163 return theMetaData 164 }