github.com/SAP/jenkins-library@v1.362.0/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 || len(GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint) > 0 { 63 splunkClient = &splunk.Splunk{} 64 logCollector = &log.CollectorHook{CorrelationID: GeneralConfig.CorrelationID} 65 log.RegisterHook(logCollector) 66 } 67 68 if err = log.RegisterANSHookIfConfigured(GeneralConfig.CorrelationID); err != nil { 69 log.Entry().WithError(err).Warn("failed to set up SAP Alert Notification Service log hook") 70 } 71 72 validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages()) 73 if err != nil { 74 return err 75 } 76 if err = validation.ValidateStruct(stepConfig); err != nil { 77 log.SetErrorCategory(log.ErrorConfiguration) 78 return err 79 } 80 81 return nil 82 }, 83 Run: func(_ *cobra.Command, _ []string) { 84 stepTelemetryData := telemetry.CustomData{} 85 stepTelemetryData.ErrorCode = "1" 86 handler := func() { 87 config.RemoveVaultSecretFiles() 88 stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds()) 89 stepTelemetryData.ErrorCategory = log.GetErrorCategory().String() 90 stepTelemetryData.PiperCommitHash = GitCommit 91 telemetryClient.SetData(&stepTelemetryData) 92 telemetryClient.Send() 93 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 94 splunkClient.Initialize(GeneralConfig.CorrelationID, 95 GeneralConfig.HookConfig.SplunkConfig.Dsn, 96 GeneralConfig.HookConfig.SplunkConfig.Token, 97 GeneralConfig.HookConfig.SplunkConfig.Index, 98 GeneralConfig.HookConfig.SplunkConfig.SendLogs) 99 splunkClient.Send(telemetryClient.GetData(), logCollector) 100 } 101 if len(GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint) > 0 { 102 splunkClient.Initialize(GeneralConfig.CorrelationID, 103 GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint, 104 GeneralConfig.HookConfig.SplunkConfig.ProdCriblToken, 105 GeneralConfig.HookConfig.SplunkConfig.ProdCriblIndex, 106 GeneralConfig.HookConfig.SplunkConfig.SendLogs) 107 splunkClient.Send(telemetryClient.GetData(), logCollector) 108 } 109 } 110 log.DeferExitHandler(handler) 111 defer handler() 112 telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME, GeneralConfig.HookConfig.PendoConfig.Token) 113 apiProxyUpload(stepConfig, &stepTelemetryData) 114 stepTelemetryData.ErrorCode = "0" 115 log.Entry().Info("SUCCESS") 116 }, 117 } 118 119 addApiProxyUploadFlags(createApiProxyUploadCmd, &stepConfig) 120 return createApiProxyUploadCmd 121 } 122 123 func addApiProxyUploadFlags(cmd *cobra.Command, stepConfig *apiProxyUploadOptions) { 124 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'") 125 cmd.Flags().StringVar(&stepConfig.FilePath, "filePath", os.Getenv("PIPER_filePath"), "Specifies api proxy zip artifact relative file path") 126 127 cmd.MarkFlagRequired("apiServiceKey") 128 cmd.MarkFlagRequired("filePath") 129 } 130 131 // retrieve step metadata 132 func apiProxyUploadMetadata() config.StepData { 133 var theMetaData = config.StepData{ 134 Metadata: config.StepMetadata{ 135 Name: "apiProxyUpload", 136 Aliases: []config.Alias{}, 137 Description: "Upload an api proxy artifact in to the API Portal", 138 }, 139 Spec: config.StepSpec{ 140 Inputs: config.StepInputs{ 141 Secrets: []config.StepSecrets{ 142 {Name: "apimApiServiceKeyCredentialsId", Description: "Jenkins secret text credential ID containing the service key to the API Management Runtime service instance of plan 'api'", Type: "jenkins"}, 143 }, 144 Parameters: []config.StepParameters{ 145 { 146 Name: "apiServiceKey", 147 ResourceRef: []config.ResourceReference{ 148 { 149 Name: "apimApiServiceKeyCredentialsId", 150 Param: "apiServiceKey", 151 Type: "secret", 152 }, 153 }, 154 Scope: []string{"PARAMETERS"}, 155 Type: "string", 156 Mandatory: true, 157 Aliases: []config.Alias{}, 158 Default: os.Getenv("PIPER_apiServiceKey"), 159 }, 160 { 161 Name: "filePath", 162 ResourceRef: []config.ResourceReference{}, 163 Scope: []string{"PARAMETERS", "STAGES", "STEPS"}, 164 Type: "string", 165 Mandatory: true, 166 Aliases: []config.Alias{}, 167 Default: os.Getenv("PIPER_filePath"), 168 }, 169 }, 170 }, 171 }, 172 } 173 return theMetaData 174 }