mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-12 10:55:20 +02:00
810d197665
* Add ans implementation * Remove todo comment * Rename test function Co-authored-by: Linda Siebert <39100394+LindaSieb@users.noreply.github.com> * Better wording Co-authored-by: Linda Siebert <39100394+LindaSieb@users.noreply.github.com> * Add reading of response body function * Use http pkg ReadResponseBody * Check read error * Better test case description * Fix formatting * Create own package for read response body * Omit empty nested resource struct * Separate Resource struct from Event struct * Merge and unmarshall instead of only unmarshalling * Improve status code error message * Remove unchangeable event fields * Separate event parts * Change log level setter function * Restructure ans send test * Revert exporting readResponseBody function Instead the code is duplicated in the xsuaa and ans package * Add check correct ans setup request * Add set options function for mocking * Review fixes * Correct function name * Use strict unmarshalling * Validate event * Move functions * Add documentation comments * improve test * Validate event * Add logrus hook for ans * Set defaults on new hook creation * Fix log level on error * Don't alter entry log level * Set severity fatal on 'fatal error' log message * Ensure that log entries don't affect each other * Remove unnecessary correlationID * Use file path instead of event template string * Improve warning messages * Add empty log message check * Allow configuration from file and string * Add sourceEventId to tags * Change resourceType to Pipeline * Use structured config approach * Use new log level set function * Check correct setup and return error * Mock http requests * Only send log level warning or higher * Use new function name * One-liner ifs * Improve test name * Fix tests * Prevent double firing * Reduce Fire test size * Add error message to test * Reduce newANSHook test size * Further check error * Rename to defaultEvent in hook struct * Reduce ifs further * Fix set error category test The ansHook Fire test cannot run in parallel, as it would affect the other tests that use the error category. * Change function name to SetServiceKey * Validate event * Rename to eventTemplate in hook struct * Move copy to event.go * Fix function mix * Remove unnecessary cleanup * Remove parallel test The translation fails now and again when parallel is on. * Remove prefix test * Remove unused copyEvent function * Fix ifs * Add docu comment * Register ans hook from pkg * register hook and setup event template seperately * Exclusively read eventTemplate from environment * setupEventTemplate tests * adjust hook levels test * sync tests- wlill still fail * migrate TestANSHook_registerANSHook test * fixes * Add ans send event step * Fix tests * Add groovy wrapper * Add groovy wrapper test * Fix function names * Reduce ifs * Fix docu * We always set the timestamp * Validate event * Test unknown field in json * Make test list test * Set all event fields as separate parameters * Generate and fix code * Review fixes * Format test file * Format go code * Fix common steps tests * Print event to console if verbose Co-authored-by: Linda Siebert <39100394+LindaSieb@users.noreply.github.com> Co-authored-by: Roland Stengel <r.stengel@sap.com>
58 lines
1.5 KiB
Go
58 lines
1.5 KiB
Go
package cmd
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/SAP/jenkins-library/pkg/ans"
|
|
"github.com/SAP/jenkins-library/pkg/log"
|
|
"github.com/SAP/jenkins-library/pkg/telemetry"
|
|
"time"
|
|
)
|
|
|
|
func ansSendEvent(config ansSendEventOptions, telemetryData *telemetry.CustomData) {
|
|
err := runAnsSendEvent(&config, &ans.ANS{})
|
|
if err != nil {
|
|
log.Entry().WithError(err).Fatal("step execution failed")
|
|
}
|
|
}
|
|
|
|
func runAnsSendEvent(config *ansSendEventOptions, c ans.Client) error {
|
|
ansServiceKey, err := ans.UnmarshallServiceKeyJSON(config.AnsServiceKey)
|
|
if err != nil {
|
|
log.SetErrorCategory(log.ErrorConfiguration)
|
|
return err
|
|
}
|
|
c.SetServiceKey(ansServiceKey)
|
|
|
|
event := ans.Event{
|
|
EventType: config.EventType,
|
|
Severity: config.Severity,
|
|
Category: config.Category,
|
|
Subject: config.Subject,
|
|
Body: config.Body,
|
|
Priority: config.Priority,
|
|
Tags: config.Tags,
|
|
Resource: &ans.Resource{
|
|
ResourceName: config.ResourceName,
|
|
ResourceType: config.ResourceType,
|
|
ResourceInstance: config.ResourceInstance,
|
|
Tags: config.ResourceTags,
|
|
},
|
|
}
|
|
|
|
if GeneralConfig.Verbose {
|
|
eventJson, _ := json.MarshalIndent(event, "", " ")
|
|
log.Entry().Infof("Event details: %s", eventJson)
|
|
}
|
|
|
|
if err = event.Validate(); err != nil {
|
|
log.SetErrorCategory(log.ErrorConfiguration)
|
|
return err
|
|
}
|
|
// We set the time
|
|
event.EventTimestamp = time.Now().Unix()
|
|
if err = c.Send(event); err != nil {
|
|
log.SetErrorCategory(log.ErrorService)
|
|
}
|
|
return err
|
|
}
|