github.com/xgoffin/jenkins-library@v1.154.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 {
    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  }