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  }