1
0
Fork 0

Adding upstream version 1.34.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-24 07:26:29 +02:00
parent e393c3af3f
commit 4978089aab
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
4963 changed files with 677545 additions and 0 deletions

View file

@ -0,0 +1,255 @@
package artifactory
import (
"strings"
"time"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/metric"
)
const meas = "artifactory_webhooks"
type event interface {
newMetric() telegraf.Metric
}
type artifactDeploymentOrDeletedEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Data struct {
Repo string `json:"repo_key"`
Path string `json:"path"`
Name string `json:"name"`
Size int64 `json:"size"`
Sha string `json:"sha256"`
} `json:"data"`
}
func (e artifactDeploymentOrDeletedEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"repo": e.Data.Repo,
"path": e.Data.Path,
"name": e.Data.Name,
}
f := map[string]interface{}{
"size": e.Data.Size,
"sha256": e.Data.Sha,
}
return metric.New(meas, t, f, time.Now())
}
type artifactMovedOrCopiedEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Data struct {
Repo string `json:"repo_key"`
Path string `json:"path"`
Name string `json:"name"`
Size int64 `json:"size"`
SourcePath string `json:"source_repo_path"`
TargetPath string `json:"target_repo_path"`
} `json:"data"`
}
func (e artifactMovedOrCopiedEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"repo": e.Data.Repo,
"path": e.Data.Path,
"name": e.Data.Name,
}
f := map[string]interface{}{
"size": e.Data.Size,
"source_path": e.Data.SourcePath,
"target_path": e.Data.TargetPath,
}
return metric.New(meas, t, f, time.Now())
}
type artifactPropertiesEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Data struct {
Repo string `json:"repo_key"`
Path string `json:"path"`
Name string `json:"name"`
Size int64 `json:"size"`
PropertyKey string `json:"property_key"`
PropertyValues []string `json:"property_values"`
}
}
func (e artifactPropertiesEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"repo": e.Data.Repo,
"path": e.Data.Path,
"name": e.Data.Name,
}
f := map[string]interface{}{
"property_key": e.Data.PropertyKey,
"property_values": strings.Join(e.Data.PropertyValues, ","),
}
return metric.New(meas, t, f, time.Now())
}
type dockerEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Data struct {
Repo string `json:"repo_key"`
Path string `json:"path"`
Name string `json:"name"`
Size int64 `json:"size"`
Sha string `json:"sha256"`
ImageName string `json:"image_name"`
Tag string `json:"tag"`
Platforms []struct {
Architecture string `json:"architecture"`
Os string `json:"os"`
} `json:"platforms"`
} `json:"data"`
}
func (e dockerEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"repo": e.Data.Repo,
"path": e.Data.Path,
"name": e.Data.Name,
"image_name": e.Data.ImageName,
}
f := map[string]interface{}{
"size": e.Data.Size,
"sha256": e.Data.Sha,
"tag": e.Data.Tag,
"platforms": e.Data.Platforms,
}
return metric.New(meas, t, f, time.Now())
}
type buildEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Data struct {
BuildName string `json:"build_name"`
BuildNumber string `json:"build_number"`
BuildStarted string `json:"build_started"`
} `json:"data"`
}
func (e buildEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
}
f := map[string]interface{}{
"build_name": e.Data.BuildName,
"build_number": e.Data.BuildNumber,
"build_started": e.Data.BuildStarted,
}
return metric.New(meas, t, f, time.Now())
}
type releaseBundleEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Destination string `json:"destination"`
Data struct {
ReleaseBundleName string `json:"release_bundle_name"`
ReleaseBundleSize int64 `json:"release_bundle_size"`
ReleaseBundleVersion string `json:"release_bundle_version"`
} `json:"data"`
JpdOrigin string `json:"jpd_origin"`
}
func (e releaseBundleEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"destination": e.Destination,
"release_bundle_name": e.Data.ReleaseBundleName,
}
f := map[string]interface{}{
"release_bundle_size": e.Data.ReleaseBundleSize,
"release_bundle_version": e.Data.ReleaseBundleVersion,
"jpd_origin": e.JpdOrigin,
}
return metric.New(meas, t, f, time.Now())
}
type distributionEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Destination string `json:"destination"`
Data struct {
EdgeNodeInfoList []struct {
EdgeNodeAddress string `json:"edge_node_address"`
EdgeNodeName string `json:"edge_node_name"`
} `json:"edge_node_info_list"`
Name string `json:"release_bundle_name"`
Size int64 `json:"release_bundle_size"`
Version string `json:"release_bundle_version"`
Message string `json:"status_message"`
TransactionID int64 `json:"transaction_id"`
} `json:"data"`
OriginURL string `json:"jpd_origin"`
}
func (e distributionEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"destination": e.Destination,
"release_bundle_name": e.Data.Name,
}
f := map[string]interface{}{
"release_bundle_size": e.Data.Size,
"release_bundle_version": e.Data.Version,
"status_message": e.Data.Message,
"transaction_id": e.Data.TransactionID,
"edge_node_info_list": e.Data.EdgeNodeInfoList,
"jpd_origin": e.OriginURL,
}
return metric.New(meas, t, f, time.Now())
}
type destinationEvent struct {
Domain string `json:"domain"`
Event string `json:"event_type"`
Destination string `json:"destination"`
Data struct {
Name string `json:"release_bundle_name"`
Version string `json:"release_bundle_version"`
Message string `json:"status_message"`
} `json:"data"`
OriginURL string `json:"jpd_origin"`
}
func (e destinationEvent) newMetric() telegraf.Metric {
t := map[string]string{
"domain": e.Domain,
"event_type": e.Event,
"destination": e.Destination,
"release_bundle_name": e.Data.Name,
}
f := map[string]interface{}{
"release_bundle_version": e.Data.Version,
"status_message": e.Data.Message,
"jpd_origin": e.OriginURL,
}
return metric.New(meas, t, f, time.Now())
}