79 lines
2.1 KiB
Go
79 lines
2.1 KiB
Go
package types
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
AuditActionCreated = "created"
|
|
AuditActionUpdated = "updated"
|
|
AuditActionDeleted = "deleted"
|
|
|
|
// Approval specific actions
|
|
AuditActionApprovalApproved = "approved"
|
|
AuditActionApprovalRejected = "rejected"
|
|
AuditActionApprovalExpired = "expired"
|
|
AuditActionApprovalArchived = "archived"
|
|
|
|
// audit specific resource kinds (others are set by
|
|
// providers, ie: deployment, daemonset, helm chart)
|
|
AuditResourceKindApproval = "approval"
|
|
AuditResourceKindWebhook = "webhook"
|
|
)
|
|
|
|
// AuditLog - audit logs lets users basic things happening in keel such as
|
|
// deployment updates and approval actions
|
|
type AuditLog struct {
|
|
ID string `json:"id" gorm:"primary_key;type:varchar(36)"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
|
|
AccountID string `json:"accountId"`
|
|
Username string `json:"username"`
|
|
Email string `json:"email"`
|
|
|
|
// create/delete/update
|
|
Action string `json:"action"`
|
|
ResourceKind string `json:"resourceKind"` // approval/deployment/daemonset/statefulset/etc...
|
|
Identifier string `json:"identifier"`
|
|
|
|
Message string `json:"message"`
|
|
Payload string `json:"payload"` // can be used for bigger messages such as webhook payload
|
|
PayloadType string `json:"payloadType"`
|
|
|
|
Metadata JSONB `json:"metadata" gorm:"type:json"`
|
|
}
|
|
|
|
// SetMetadata - set audit log metadata (providers, namespaces)
|
|
func (l *AuditLog) SetMetadata(m map[string]string) {
|
|
meta := make(map[string]interface{})
|
|
for key, value := range m {
|
|
meta[key] = value
|
|
}
|
|
|
|
l.Metadata = meta
|
|
}
|
|
|
|
// AuditLogQuery - struct used to query audit logs
|
|
type AuditLogQuery struct {
|
|
Email string `json:"email"`
|
|
Username string `json:"username"`
|
|
Order string `json:"order"` // empty or "desc"
|
|
Limit int `json:"limit"`
|
|
Offset int `json:"offset"`
|
|
|
|
ResourceKindFilter []string `json:"resourceKindFilter"`
|
|
}
|
|
|
|
type AuditLogStatsQuery struct {
|
|
Days int
|
|
}
|
|
|
|
type AuditLogStats struct {
|
|
Date string `json:"date"`
|
|
Webhooks int `json:"webhooks"`
|
|
Approved int `json:"approved"`
|
|
Rejected int `json:"rejected"`
|
|
Updates int `json:"updates"`
|
|
}
|