github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/cmd/apiProxyList_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  	"path/filepath"
     9  	"time"
    10  
    11  	"github.com/SAP/jenkins-library/pkg/config"
    12  	"github.com/SAP/jenkins-library/pkg/log"
    13  	"github.com/SAP/jenkins-library/pkg/piperenv"
    14  	"github.com/SAP/jenkins-library/pkg/splunk"
    15  	"github.com/SAP/jenkins-library/pkg/telemetry"
    16  	"github.com/SAP/jenkins-library/pkg/validation"
    17  	"github.com/spf13/cobra"
    18  )
    19  
    20  type apiProxyListOptions struct {
    21  	APIServiceKey string `json:"apiServiceKey,omitempty"`
    22  	Top           int    `json:"top,omitempty"`
    23  	Skip          int    `json:"skip,omitempty"`
    24  	Filter        string `json:"filter,omitempty"`
    25  	Count         bool   `json:"count,omitempty"`
    26  	Search        string `json:"search,omitempty"`
    27  	Orderby       string `json:"orderby,omitempty"`
    28  	Select        string `json:"select,omitempty"`
    29  	Expand        string `json:"expand,omitempty"`
    30  }
    31  
    32  type apiProxyListCommonPipelineEnvironment struct {
    33  	custom struct {
    34  		APIProxyList string
    35  	}
    36  }
    37  
    38  func (p *apiProxyListCommonPipelineEnvironment) persist(path, resourceName string) {
    39  	content := []struct {
    40  		category string
    41  		name     string
    42  		value    interface{}
    43  	}{
    44  		{category: "custom", name: "apiProxyList", value: p.custom.APIProxyList},
    45  	}
    46  
    47  	errCount := 0
    48  	for _, param := range content {
    49  		err := piperenv.SetResourceParameter(path, resourceName, filepath.Join(param.category, param.name), param.value)
    50  		if err != nil {
    51  			log.Entry().WithError(err).Error("Error persisting piper environment.")
    52  			errCount++
    53  		}
    54  	}
    55  	if errCount > 0 {
    56  		log.Entry().Error("failed to persist Piper environment")
    57  	}
    58  }
    59  
    60  // ApiProxyListCommand Get the List of an API Proxy from the API Portal
    61  func ApiProxyListCommand() *cobra.Command {
    62  	const STEP_NAME = "apiProxyList"
    63  
    64  	metadata := apiProxyListMetadata()
    65  	var stepConfig apiProxyListOptions
    66  	var startTime time.Time
    67  	var commonPipelineEnvironment apiProxyListCommonPipelineEnvironment
    68  	var logCollector *log.CollectorHook
    69  	var splunkClient *splunk.Splunk
    70  	telemetryClient := &telemetry.Telemetry{}
    71  
    72  	var createApiProxyListCmd = &cobra.Command{
    73  		Use:   STEP_NAME,
    74  		Short: "Get the List of an API Proxy from the API Portal",
    75  		Long:  `With this step you can get list of all API Proxy from the API Portal using the OData API. Learn more about the API Management API for getting list of an API proxy artifact [here](https://help.sap.com/viewer/66d066d903c2473f81ec33acfe2ccdb4/Cloud/en-US/e26b3320cd534ae4bc743af8013a8abb.html).`,
    76  		PreRunE: func(cmd *cobra.Command, _ []string) error {
    77  			startTime = time.Now()
    78  			log.SetStepName(STEP_NAME)
    79  			log.SetVerbose(GeneralConfig.Verbose)
    80  
    81  			GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens)
    82  
    83  			path, _ := os.Getwd()
    84  			fatalHook := &log.FatalHook{CorrelationID: GeneralConfig.CorrelationID, Path: path}
    85  			log.RegisterHook(fatalHook)
    86  
    87  			err := PrepareConfig(cmd, &metadata, STEP_NAME, &stepConfig, config.OpenPiperFile)
    88  			if err != nil {
    89  				log.SetErrorCategory(log.ErrorConfiguration)
    90  				return err
    91  			}
    92  			log.RegisterSecret(stepConfig.APIServiceKey)
    93  
    94  			if len(GeneralConfig.HookConfig.SentryConfig.Dsn) > 0 {
    95  				sentryHook := log.NewSentryHook(GeneralConfig.HookConfig.SentryConfig.Dsn, GeneralConfig.CorrelationID)
    96  				log.RegisterHook(&sentryHook)
    97  			}
    98  
    99  			if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 {
   100  				splunkClient = &splunk.Splunk{}
   101  				logCollector = &log.CollectorHook{CorrelationID: GeneralConfig.CorrelationID}
   102  				log.RegisterHook(logCollector)
   103  			}
   104  
   105  			if err = log.RegisterANSHookIfConfigured(GeneralConfig.CorrelationID); err != nil {
   106  				log.Entry().WithError(err).Warn("failed to set up SAP Alert Notification Service log hook")
   107  			}
   108  
   109  			validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages())
   110  			if err != nil {
   111  				return err
   112  			}
   113  			if err = validation.ValidateStruct(stepConfig); err != nil {
   114  				log.SetErrorCategory(log.ErrorConfiguration)
   115  				return err
   116  			}
   117  
   118  			return nil
   119  		},
   120  		Run: func(_ *cobra.Command, _ []string) {
   121  			stepTelemetryData := telemetry.CustomData{}
   122  			stepTelemetryData.ErrorCode = "1"
   123  			handler := func() {
   124  				commonPipelineEnvironment.persist(GeneralConfig.EnvRootPath, "commonPipelineEnvironment")
   125  				config.RemoveVaultSecretFiles()
   126  				stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds())
   127  				stepTelemetryData.ErrorCategory = log.GetErrorCategory().String()
   128  				stepTelemetryData.PiperCommitHash = GitCommit
   129  				telemetryClient.SetData(&stepTelemetryData)
   130  				telemetryClient.Send()
   131  				if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 {
   132  					splunkClient.Initialize(GeneralConfig.CorrelationID,
   133  						GeneralConfig.HookConfig.SplunkConfig.Dsn,
   134  						GeneralConfig.HookConfig.SplunkConfig.Token,
   135  						GeneralConfig.HookConfig.SplunkConfig.Index,
   136  						GeneralConfig.HookConfig.SplunkConfig.SendLogs)
   137  					splunkClient.Send(telemetryClient.GetData(), logCollector)
   138  				}
   139  				if len(GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint) > 0 {
   140  					splunkClient.Initialize(GeneralConfig.CorrelationID,
   141  						GeneralConfig.HookConfig.SplunkConfig.ProdCriblEndpoint,
   142  						GeneralConfig.HookConfig.SplunkConfig.ProdCriblToken,
   143  						GeneralConfig.HookConfig.SplunkConfig.ProdCriblIndex,
   144  						GeneralConfig.HookConfig.SplunkConfig.SendLogs)
   145  					splunkClient.Send(telemetryClient.GetData(), logCollector)
   146  				}
   147  			}
   148  			log.DeferExitHandler(handler)
   149  			defer handler()
   150  			telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME)
   151  			apiProxyList(stepConfig, &stepTelemetryData, &commonPipelineEnvironment)
   152  			stepTelemetryData.ErrorCode = "0"
   153  			log.Entry().Info("SUCCESS")
   154  		},
   155  	}
   156  
   157  	addApiProxyListFlags(createApiProxyListCmd, &stepConfig)
   158  	return createApiProxyListCmd
   159  }
   160  
   161  func addApiProxyListFlags(cmd *cobra.Command, stepConfig *apiProxyListOptions) {
   162  	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'")
   163  	cmd.Flags().IntVar(&stepConfig.Top, "top", 0, "Show only the first n items.")
   164  	cmd.Flags().IntVar(&stepConfig.Skip, "skip", 0, "Skip the first n items.")
   165  	cmd.Flags().StringVar(&stepConfig.Filter, "filter", os.Getenv("PIPER_filter"), "Filter items by property values.")
   166  	cmd.Flags().BoolVar(&stepConfig.Count, "count", false, "Include count of items.")
   167  	cmd.Flags().StringVar(&stepConfig.Search, "search", os.Getenv("PIPER_search"), "Search items by search phrases.")
   168  	cmd.Flags().StringVar(&stepConfig.Orderby, "orderby", os.Getenv("PIPER_orderby"), "Order by property values.")
   169  	cmd.Flags().StringVar(&stepConfig.Select, "select", os.Getenv("PIPER_select"), "Select properties to be returned.")
   170  	cmd.Flags().StringVar(&stepConfig.Expand, "expand", os.Getenv("PIPER_expand"), "Expand related entities.")
   171  
   172  	cmd.MarkFlagRequired("apiServiceKey")
   173  }
   174  
   175  // retrieve step metadata
   176  func apiProxyListMetadata() config.StepData {
   177  	var theMetaData = config.StepData{
   178  		Metadata: config.StepMetadata{
   179  			Name:        "apiProxyList",
   180  			Aliases:     []config.Alias{},
   181  			Description: "Get the List of an API Proxy from the API Portal",
   182  		},
   183  		Spec: config.StepSpec{
   184  			Inputs: config.StepInputs{
   185  				Secrets: []config.StepSecrets{
   186  					{Name: "apimApiServiceKeyCredentialsId", Description: "Jenkins secret text credential ID containing the service key to the API Management Runtime service instance of plan 'api'", Type: "jenkins"},
   187  				},
   188  				Parameters: []config.StepParameters{
   189  					{
   190  						Name: "apiServiceKey",
   191  						ResourceRef: []config.ResourceReference{
   192  							{
   193  								Name:  "apimApiServiceKeyCredentialsId",
   194  								Param: "apiServiceKey",
   195  								Type:  "secret",
   196  							},
   197  						},
   198  						Scope:     []string{"PARAMETERS"},
   199  						Type:      "string",
   200  						Mandatory: true,
   201  						Aliases:   []config.Alias{},
   202  						Default:   os.Getenv("PIPER_apiServiceKey"),
   203  					},
   204  					{
   205  						Name:        "top",
   206  						ResourceRef: []config.ResourceReference{},
   207  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   208  						Type:        "int",
   209  						Mandatory:   false,
   210  						Aliases:     []config.Alias{},
   211  						Default:     0,
   212  					},
   213  					{
   214  						Name:        "skip",
   215  						ResourceRef: []config.ResourceReference{},
   216  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   217  						Type:        "int",
   218  						Mandatory:   false,
   219  						Aliases:     []config.Alias{},
   220  						Default:     0,
   221  					},
   222  					{
   223  						Name:        "filter",
   224  						ResourceRef: []config.ResourceReference{},
   225  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   226  						Type:        "string",
   227  						Mandatory:   false,
   228  						Aliases:     []config.Alias{},
   229  						Default:     os.Getenv("PIPER_filter"),
   230  					},
   231  					{
   232  						Name:        "count",
   233  						ResourceRef: []config.ResourceReference{},
   234  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   235  						Type:        "bool",
   236  						Mandatory:   false,
   237  						Aliases:     []config.Alias{},
   238  						Default:     false,
   239  					},
   240  					{
   241  						Name:        "search",
   242  						ResourceRef: []config.ResourceReference{},
   243  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   244  						Type:        "string",
   245  						Mandatory:   false,
   246  						Aliases:     []config.Alias{},
   247  						Default:     os.Getenv("PIPER_search"),
   248  					},
   249  					{
   250  						Name:        "orderby",
   251  						ResourceRef: []config.ResourceReference{},
   252  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   253  						Type:        "string",
   254  						Mandatory:   false,
   255  						Aliases:     []config.Alias{},
   256  						Default:     os.Getenv("PIPER_orderby"),
   257  					},
   258  					{
   259  						Name:        "select",
   260  						ResourceRef: []config.ResourceReference{},
   261  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   262  						Type:        "string",
   263  						Mandatory:   false,
   264  						Aliases:     []config.Alias{},
   265  						Default:     os.Getenv("PIPER_select"),
   266  					},
   267  					{
   268  						Name:        "expand",
   269  						ResourceRef: []config.ResourceReference{},
   270  						Scope:       []string{"PARAMETERS", "STAGES", "STEPS"},
   271  						Type:        "string",
   272  						Mandatory:   false,
   273  						Aliases:     []config.Alias{},
   274  						Default:     os.Getenv("PIPER_expand"),
   275  					},
   276  				},
   277  			},
   278  			Outputs: config.StepOutputs{
   279  				Resources: []config.StepResources{
   280  					{
   281  						Name: "commonPipelineEnvironment",
   282  						Type: "piperEnvironment",
   283  						Parameters: []map[string]interface{}{
   284  							{"name": "custom/apiProxyList"},
   285  						},
   286  					},
   287  				},
   288  			},
   289  		},
   290  	}
   291  	return theMetaData
   292  }