Documentation ¶
Overview ¶
Package types holds most of the types used across Keel
Index ¶
- Constants
- Variables
- func ParseEventNotificationChannels(annotations map[string]string) []string
- func ParseReleaseNotesURL(annotations map[string]string) string
- type Approval
- type ApprovalStatus
- type AuditLog
- type AuditLogQuery
- type AuditLogStats
- type AuditLogStatsQuery
- type Credentials
- type Event
- type EventNotification
- type GetApprovalQuery
- type JSONB
- type Level
- type Notification
- type Policy
- type ProviderType
- type Repository
- type TrackedImage
- type TriggerType
- type Version
- type VersionInfo
- type VersionResponse
Constants ¶
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" )
const KeelApprovalDeadlineDefault = 24
KeelApprovalDeadlineDefault - default deadline in hours
const KeelApprovalDeadlineLabel = "keel.sh/approvalDeadline"
KeelApprovalDeadlineLabel - approval deadline
const KeelDefaultPort = 9300
KeelDefaultPort - default port for application
const KeelDigestAnnotation = "keel.sh/digest"
KeelDigestAnnotation - digest annotation
const KeelForceTagMatchLabel = "keel.sh/matchTag"
const KeelForceTagMatchLegacyLabel = "keel.sh/match-tag"
KeelForceTagMatchLabel - label that checks whether tags match before force updating
const KeelImagePullSecretAnnotation = "keel.sh/imagePullSecret"
const KeelInitContainerAnnotation = "keel.sh/initContainers"
KeelInitContainerAnnotation - label or annotation to track init containers, defaults to false for backward compatibility
const KeelMatchPreReleaseAnnotation = "keel.sh/matchPreRelease"
KeelMatchPreReleaseAnnotation - label or annotation to set pre-release matching for SemVer, defaults to true for backward compatibility
const KeelMinimumApprovalsLabel = "keel.sh/approvals"
KeelMinimumApprovalsLabel - min approvals
const KeelMonitorContainers = "keel.sh/monitorContainers"
KeelMonitorContainers - you can only have one keel settings per object type, but some of them might have multiple containers. Use this setting to specify with a regular expression which containers should be monitored. If empty, all containers will be monitored. It is currently a limitation that all containers in the same object will share the same configuration (pollSchedule, etc.). Support a per-container configuration would require quite a refactor that would impact the frontend and the current implementation. Future proposal for this would be to have namespaced annotations such as keel.sh/mycontainer/poolSchedule
const KeelNotificationChanAnnotation = "keel.sh/notify"
KeelNotificationChanAnnotation - optional notification to override default notification channel(-s) per deployment/chart
const KeelPolicyLabel = "keel.sh/policy"
KeelPolicyLabel - keel update policies (version checking)
const KeelPollScheduleAnnotation = "keel.sh/pollSchedule"
KeelPollScheduleAnnotation - optional variable to setup custom schedule for polling, defaults to @every 10m
const KeelReleaseNotesURL = "keel.sh/releaseNotes"
KeelReleasePage - optional release notes URL passed on with notification
const KeelTriggerLabel = "keel.sh/trigger"
KeelTriggerLabel - trigger label is used to specify custom trigger types for example keel.sh/trigger=poll would signal poll trigger to start watching for repository changes
const KeelUpdateTimeAnnotation = "keel.sh/update-time"
KeelUpdateTimeAnnotation - update time
Variables ¶
var KeelPollDefaultSchedule = "@every 1m"
KeelPollDefaultSchedule - defaul polling schedule
Functions ¶
func ParseEventNotificationChannels ¶
ParseEventNotificationChannels - parses deployment annotations or chart config to get channel overrides
func ParseReleaseNotesURL ¶
Types ¶
type Approval ¶
type Approval struct { ID string `json:"id" gorm:"primary_key;type:varchar(36)"` // Archived is set to true once approval is finally approved/rejected Archived bool `json:"archived"` // Provider name - Kubernetes/Helm Provider ProviderType `json:"provider"` // Identifier is used to inform user about specific // Helm release or k8s deployment // ie: k8s <namespace>/<deployment name> // helm: <namespace>/<release name> Identifier string `json:"identifier"` // Event that triggered evaluation Event *Event `json:"event" gorm:"type:json"` Message string `json:"message"` CurrentVersion string `json:"currentVersion"` NewVersion string `json:"newVersion"` // Digest is used to verify that images are the ones that got the approvals. // If digest doesn't match for the image, votes are reset. Digest string `json:"digest"` // Requirements for the update such as number of votes // and deadline VotesRequired int `json:"votesRequired"` VotesReceived int `json:"votesReceived"` // Voters is a list of voter // IDs for audit Voters JSONB `json:"voters" gorm:"type:json"` // Explicitly rejected approval // can be set directly by user // so even if deadline is not reached approval // could be turned down Rejected bool `json:"rejected"` // Deadline for this request Deadline time.Time `json:"deadline"` // When this approval was created CreatedAt time.Time `json:"createdAt"` // WHen this approval was updated UpdatedAt time.Time `json:"updatedAt"` }
Approval used to store and track updates
func (*Approval) Delta ¶
Delta of what's changed ie: webhookrelay/webhook-demo:0.15.0 -> webhookrelay/webhook-demo:0.16.0
func (*Approval) Status ¶
func (a *Approval) Status() ApprovalStatus
Status - returns current approval status
type ApprovalStatus ¶
type ApprovalStatus int
ApprovalStatus - approval status type used in approvals to determine whether it was rejected/approved or still pending
const ( ApprovalStatusUnknown ApprovalStatus = iota ApprovalStatusPending ApprovalStatusApproved ApprovalStatusRejected )
Available approval status types
func (ApprovalStatus) String ¶
func (s ApprovalStatus) String() string
type AuditLog ¶
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"` }
AuditLog - audit logs lets users basic things happening in keel such as deployment updates and approval actions
func (*AuditLog) SetMetadata ¶
SetMetadata - set audit log metadata (providers, namespaces)
type AuditLogQuery ¶
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"` }
AuditLogQuery - struct used to query audit logs
type AuditLogStats ¶
type AuditLogStatsQuery ¶
type AuditLogStatsQuery struct {
Days int
}
type Credentials ¶
type Credentials struct {
Username, Password string
}
Credentials - registry credentials
type Event ¶
type Event struct { Repository Repository `json:"repository,omitempty"` CreatedAt time.Time `json:"createdAt,omitempty"` // optional field to identify trigger TriggerName string `json:"triggerName,omitempty"` }
Event - holds information about new event from trigger
type EventNotification ¶
type EventNotification struct { Name string `json:"name"` Message string `json:"message"` CreatedAt time.Time `json:"createdAt"` Type Notification `json:"type"` Level Level `json:"level"` ResourceKind string `json:"resourceKind"` Identifier string `json:"identifier"` // Channels is an optional variable to override // default channel(-s) when performing an update Channels []string `json:"-"` Metadata map[string]string `json:"metadata"` }
EventNotification notification used for sending
type GetApprovalQuery ¶
type Level ¶
type Level int
Level - event levet
Available event levels
func ParseLevel ¶
ParseLevel takes a string level and returns notification level constant.
func (Level) MarshalJSON ¶
MarshalJSON is generated so Level satisfies json.Marshaler.
func (*Level) UnmarshalJSON ¶
UnmarshalJSON is generated so Level satisfies json.Unmarshaler.
type Notification ¶
type Notification int
Notification - notification types used by notifier
const ( PreProviderSubmitNotification Notification = iota PostProviderSubmitNotification // Kubernetes notification types NotificationPreDeploymentUpdate NotificationDeploymentUpdate // Helm notification types NotificationPreReleaseUpdate NotificationReleaseUpdate NotificationSystemEvent NotificationUpdateApproved NotificationUpdateRejected )
available notification types for hooks
func (Notification) MarshalJSON ¶
func (r Notification) MarshalJSON() ([]byte, error)
MarshalJSON is generated so Notification satisfies json.Marshaler.
func (Notification) String ¶
func (n Notification) String() string
func (*Notification) UnmarshalJSON ¶
func (r *Notification) UnmarshalJSON(data []byte) error
UnmarshalJSON is generated so Notification satisfies json.Unmarshaler.
type ProviderType ¶
type ProviderType int
ProviderType - provider type used to differentiate different providers when used with plugins
const ( ProviderTypeUnknown ProviderType = iota ProviderTypeKubernetes ProviderTypeHelm )
Known provider types
func (ProviderType) MarshalJSON ¶
func (r ProviderType) MarshalJSON() ([]byte, error)
MarshalJSON is generated so ProviderType satisfies json.Marshaler.
func (ProviderType) String ¶
func (t ProviderType) String() string
func (*ProviderType) UnmarshalJSON ¶
func (r *ProviderType) UnmarshalJSON(data []byte) error
UnmarshalJSON is generated so ProviderType satisfies json.Unmarshaler.
type Repository ¶
type Repository struct { Host string `json:"host"` Name string `json:"name"` Tag string `json:"tag"` Digest string `json:"digest"` // optional digest field }
Repository - represents main docker repository fields that keel cares about
func (*Repository) String ¶
func (r *Repository) String() string
String gives you [host/]team/repo[:tag] identifier
type TrackedImage ¶
type TrackedImage struct { Image *image.Reference `json:"image"` Trigger TriggerType `json:"trigger"` PollSchedule string `json:"pollSchedule"` Provider string `json:"provider"` Namespace string `json:"namespace"` Secrets []string `json:"secrets"` Meta map[string]string `json:"meta"` // metadata supplied by providers // a list of pre-release tags, ie: 1.0.0-dev, 1.5.0-prod get translated into // dev, prod // combined semver tags Tags []string `json:"tags"` Policy Policy `json:"policy"` }
TrackedImage - tracked image data+metadata
func (TrackedImage) String ¶
func (i TrackedImage) String() string
type TriggerType ¶
type TriggerType int
TriggerType - trigger types
const ( TriggerTypeDefault TriggerType = iota // default policy is to wait for external triggers TriggerTypePoll // poll policy sets up watchers for the affected repositories TriggerTypeApproval // fulfilled approval requests trigger events )
Available trigger types
func ParseTrigger ¶
func ParseTrigger(trigger string) TriggerType
ParseTrigger - parse trigger string into type
func (TriggerType) MarshalJSON ¶
func (r TriggerType) MarshalJSON() ([]byte, error)
MarshalJSON is generated so TriggerType satisfies json.Marshaler.
func (TriggerType) String ¶
func (t TriggerType) String() string
func (*TriggerType) UnmarshalJSON ¶
func (r *TriggerType) UnmarshalJSON(data []byte) error
UnmarshalJSON is generated so TriggerType satisfies json.Unmarshaler.
type Version ¶
type Version struct { Major int64 Minor int64 Patch int64 PreRelease string Metadata string Original string }
Version - version container
type VersionInfo ¶
type VersionInfo struct { Name string `json:"name"` BuildDate string `json:"buildDate"` Revision string `json:"revision"` Version string `json:"version"` APIVersion string `json:"apiVersion"` GoVersion string `json:"goVersion"` OS string `json:"os"` Arch string `json:"arch"` KernelVersion string `json:"kernelVersion"` Experimental bool `json:"experimental"` }
VersionInfo describes version and runtime info.
type VersionResponse ¶
type VersionResponse struct { Client *VersionInfo Server *VersionInfo }
VersionResponse - version API call response
func (VersionResponse) ServerOK ¶
func (v VersionResponse) ServerOK() bool
ServerOK returns true when the client could connect to the keel and parse the information received. It returns false otherwise.