github.com/xgoffin/jenkins-library@v1.154.0/cmd/abapAddonAssemblyKitCheckPV_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 abapAddonAssemblyKitCheckPVOptions struct { 21 AbapAddonAssemblyKitEndpoint string `json:"abapAddonAssemblyKitEndpoint,omitempty"` 22 Username string `json:"username,omitempty"` 23 Password string `json:"password,omitempty"` 24 AddonDescriptorFileName string `json:"addonDescriptorFileName,omitempty"` 25 AddonDescriptor string `json:"addonDescriptor,omitempty"` 26 } 27 28 type abapAddonAssemblyKitCheckPVCommonPipelineEnvironment struct { 29 abap struct { 30 addonDescriptor string 31 } 32 } 33 34 func (p *abapAddonAssemblyKitCheckPVCommonPipelineEnvironment) persist(path, resourceName string) { 35 content := []struct { 36 category string 37 name string 38 value interface{} 39 }{ 40 {category: "abap", name: "addonDescriptor", value: p.abap.addonDescriptor}, 41 } 42 43 errCount := 0 44 for _, param := range content { 45 err := piperenv.SetResourceParameter(path, resourceName, filepath.Join(param.category, param.name), param.value) 46 if err != nil { 47 log.Entry().WithError(err).Error("Error persisting piper environment.") 48 errCount++ 49 } 50 } 51 if errCount > 0 { 52 log.Entry().Error("failed to persist Piper environment") 53 } 54 } 55 56 // AbapAddonAssemblyKitCheckPVCommand This step checks the validity of a Addon Product Version. 57 func AbapAddonAssemblyKitCheckPVCommand() *cobra.Command { 58 const STEP_NAME = "abapAddonAssemblyKitCheckPV" 59 60 metadata := abapAddonAssemblyKitCheckPVMetadata() 61 var stepConfig abapAddonAssemblyKitCheckPVOptions 62 var startTime time.Time 63 var commonPipelineEnvironment abapAddonAssemblyKitCheckPVCommonPipelineEnvironment 64 var logCollector *log.CollectorHook 65 var splunkClient *splunk.Splunk 66 telemetryClient := &telemetry.Telemetry{} 67 68 var createAbapAddonAssemblyKitCheckPVCmd = &cobra.Command{ 69 Use: STEP_NAME, 70 Short: "This step checks the validity of a Addon Product Version.", 71 Long: `This step checks by calling AAKaaS whether the Addon Product Version in the addonDescriptor configuration file specified via addonDescriptorFileName (e.g. addon.yml) does exist or is a valid successor of an existing Product Version. 72 It resolves the dotted version string into version, support package stack level and patch level and writes it to the addonDescriptor structure in the Piper commonPipelineEnvironment for usage of subsequent pipeline steps. 73 <br /> 74 For Terminology refer to the [Scenario Description](https://www.project-piper.io/scenarios/abapEnvironmentAddons/).`, 75 PreRunE: func(cmd *cobra.Command, _ []string) error { 76 startTime = time.Now() 77 log.SetStepName(STEP_NAME) 78 log.SetVerbose(GeneralConfig.Verbose) 79 80 GeneralConfig.GitHubAccessTokens = ResolveAccessTokens(GeneralConfig.GitHubTokens) 81 82 path, _ := os.Getwd() 83 fatalHook := &log.FatalHook{CorrelationID: GeneralConfig.CorrelationID, Path: path} 84 log.RegisterHook(fatalHook) 85 86 err := PrepareConfig(cmd, &metadata, STEP_NAME, &stepConfig, config.OpenPiperFile) 87 if err != nil { 88 log.SetErrorCategory(log.ErrorConfiguration) 89 return err 90 } 91 log.RegisterSecret(stepConfig.Username) 92 log.RegisterSecret(stepConfig.Password) 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 validation, err := validation.New(validation.WithJSONNamesForStructFields(), validation.WithPredefinedErrorMessages()) 106 if err != nil { 107 return err 108 } 109 if err = validation.ValidateStruct(stepConfig); err != nil { 110 log.SetErrorCategory(log.ErrorConfiguration) 111 return err 112 } 113 114 return nil 115 }, 116 Run: func(_ *cobra.Command, _ []string) { 117 stepTelemetryData := telemetry.CustomData{} 118 stepTelemetryData.ErrorCode = "1" 119 handler := func() { 120 commonPipelineEnvironment.persist(GeneralConfig.EnvRootPath, "commonPipelineEnvironment") 121 config.RemoveVaultSecretFiles() 122 stepTelemetryData.Duration = fmt.Sprintf("%v", time.Since(startTime).Milliseconds()) 123 stepTelemetryData.ErrorCategory = log.GetErrorCategory().String() 124 stepTelemetryData.PiperCommitHash = GitCommit 125 telemetryClient.SetData(&stepTelemetryData) 126 telemetryClient.Send() 127 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 128 splunkClient.Send(telemetryClient.GetData(), logCollector) 129 } 130 } 131 log.DeferExitHandler(handler) 132 defer handler() 133 telemetryClient.Initialize(GeneralConfig.NoTelemetry, STEP_NAME) 134 if len(GeneralConfig.HookConfig.SplunkConfig.Dsn) > 0 { 135 splunkClient.Initialize(GeneralConfig.CorrelationID, 136 GeneralConfig.HookConfig.SplunkConfig.Dsn, 137 GeneralConfig.HookConfig.SplunkConfig.Token, 138 GeneralConfig.HookConfig.SplunkConfig.Index, 139 GeneralConfig.HookConfig.SplunkConfig.SendLogs) 140 } 141 abapAddonAssemblyKitCheckPV(stepConfig, &stepTelemetryData, &commonPipelineEnvironment) 142 stepTelemetryData.ErrorCode = "0" 143 log.Entry().Info("SUCCESS") 144 }, 145 } 146 147 addAbapAddonAssemblyKitCheckPVFlags(createAbapAddonAssemblyKitCheckPVCmd, &stepConfig) 148 return createAbapAddonAssemblyKitCheckPVCmd 149 } 150 151 func addAbapAddonAssemblyKitCheckPVFlags(cmd *cobra.Command, stepConfig *abapAddonAssemblyKitCheckPVOptions) { 152 cmd.Flags().StringVar(&stepConfig.AbapAddonAssemblyKitEndpoint, "abapAddonAssemblyKitEndpoint", `https://apps.support.sap.com`, "Base URL to the Addon Assembly Kit as a Service (AAKaaS) system") 153 cmd.Flags().StringVar(&stepConfig.Username, "username", os.Getenv("PIPER_username"), "User for the Addon Assembly Kit as a Service (AAKaaS) system") 154 cmd.Flags().StringVar(&stepConfig.Password, "password", os.Getenv("PIPER_password"), "Password for the Addon Assembly Kit as a Service (AAKaaS) system") 155 cmd.Flags().StringVar(&stepConfig.AddonDescriptorFileName, "addonDescriptorFileName", `addon.yml`, "File name of the YAML file which describes the Product Version and corresponding Software Component Versions") 156 cmd.Flags().StringVar(&stepConfig.AddonDescriptor, "addonDescriptor", os.Getenv("PIPER_addonDescriptor"), "Structure in the commonPipelineEnvironment containing information about the Product Version and corresponding Software Component Versions") 157 158 cmd.MarkFlagRequired("abapAddonAssemblyKitEndpoint") 159 cmd.MarkFlagRequired("username") 160 cmd.MarkFlagRequired("password") 161 cmd.MarkFlagRequired("addonDescriptorFileName") 162 } 163 164 // retrieve step metadata 165 func abapAddonAssemblyKitCheckPVMetadata() config.StepData { 166 var theMetaData = config.StepData{ 167 Metadata: config.StepMetadata{ 168 Name: "abapAddonAssemblyKitCheckPV", 169 Aliases: []config.Alias{}, 170 Description: "This step checks the validity of a Addon Product Version.", 171 }, 172 Spec: config.StepSpec{ 173 Inputs: config.StepInputs{ 174 Secrets: []config.StepSecrets{ 175 {Name: "abapAddonAssemblyKitCredentialsId", Description: "CredentialsId stored in Jenkins for the Addon Assembly Kit as a Service (AAKaaS) system", Type: "jenkins"}, 176 }, 177 Parameters: []config.StepParameters{ 178 { 179 Name: "abapAddonAssemblyKitEndpoint", 180 ResourceRef: []config.ResourceReference{}, 181 Scope: []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"}, 182 Type: "string", 183 Mandatory: true, 184 Aliases: []config.Alias{}, 185 Default: `https://apps.support.sap.com`, 186 }, 187 { 188 Name: "username", 189 ResourceRef: []config.ResourceReference{}, 190 Scope: []string{"PARAMETERS", "STAGES", "STEPS"}, 191 Type: "string", 192 Mandatory: true, 193 Aliases: []config.Alias{}, 194 Default: os.Getenv("PIPER_username"), 195 }, 196 { 197 Name: "password", 198 ResourceRef: []config.ResourceReference{}, 199 Scope: []string{"PARAMETERS"}, 200 Type: "string", 201 Mandatory: true, 202 Aliases: []config.Alias{}, 203 Default: os.Getenv("PIPER_password"), 204 }, 205 { 206 Name: "addonDescriptorFileName", 207 ResourceRef: []config.ResourceReference{}, 208 Scope: []string{"PARAMETERS", "STAGES", "STEPS", "GENERAL"}, 209 Type: "string", 210 Mandatory: true, 211 Aliases: []config.Alias{}, 212 Default: `addon.yml`, 213 }, 214 { 215 Name: "addonDescriptor", 216 ResourceRef: []config.ResourceReference{ 217 { 218 Name: "commonPipelineEnvironment", 219 Param: "abap/addonDescriptor", 220 }, 221 }, 222 Scope: []string{"PARAMETERS", "STAGES", "STEPS"}, 223 Type: "string", 224 Mandatory: false, 225 Aliases: []config.Alias{}, 226 Default: os.Getenv("PIPER_addonDescriptor"), 227 }, 228 }, 229 }, 230 Outputs: config.StepOutputs{ 231 Resources: []config.StepResources{ 232 { 233 Name: "commonPipelineEnvironment", 234 Type: "piperEnvironment", 235 Parameters: []map[string]interface{}{ 236 {"name": "abap/addonDescriptor"}, 237 }, 238 }, 239 }, 240 }, 241 }, 242 } 243 return theMetaData 244 }