popeye

package
v0.8.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// LevelToIssueSeverity maps Popeye's <Level> type to Zora's
	// <ClusterIssueSeverity>.
	LevelToIssueSeverity = [4]zorav1a1.ClusterIssueSeverity{
		zorav1a1.SeverityUnknown,
		zorav1a1.SeverityLow,
		zorav1a1.SeverityMedium,
		zorav1a1.SeverityHigh,
	}

	// IssueIDtoGenericMsg maps Popeye's issue codes to generic versions of the
	// issue description. The original issues can be found on Popeye's source
	// file <internal/issues/assets/codes.yml>.
	IssueIDtoGenericMsg = map[string]string{

		"POP-105": "Unnamed probe port in use",
		"POP-108": "Unnamed port",
		"POP-109": "CPU reached request threshold",
		"POP-110": "Memory reached request threshold",
		"POP-111": "CPU reached user threshold",
		"POP-112": "Memory reached user threshold",
		"POP-113": "Container image not hosted on an allowed docker registry",

		"POP-200": "Pod is terminating",
		"POP-201": "Pod is terminating a process",
		"POP-202": "Pod is waiting",
		"POP-203": "Pod is waiting a process",
		"POP-204": "Pod is not ready",
		"POP-205": "Pod was restarted",
		"POP-207": "Pod is in an unhappy phase",
		"POP-209": "Pod is managed by multiple PodDisruptionBudgets",

		"POP-304": "ServiceAccount references a secret which does not exist",
		"POP-305": "ServiceAccount references a docker-image pull secret which does not exist",
		"POP-307": "Reference to a non existing ServiceAccount",

		"POP-401": "Unable to locate key reference",
		"POP-403": "Deprecated API group",
		"POP-404": "Deprecation check failed",
		"POP-407": "References a resource which does not exist",

		"POP-501": "Unhealthy, mismatch between desired and available state",
		"POP-503": "At current load, CPU under allocated",
		"POP-504": "At current load, CPU over allocated",
		"POP-505": "At current load, Memory under allocated",
		"POP-506": "At current load, Memory over allocated",
		"POP-507": "Deployment references ServiceAccount which does not exist",
		"POP-508": "No pods match controller selector",

		"POP-600": "HPA references a Deployment which does not exist",
		"POP-602": "Replicas at burst will match or exceed cluster CPU capacity",
		"POP-603": "Replicas at burst will match or exceed cluster memory capacity",
		"POP-604": "If ALL HPAs are triggered, cluster CPU capacity will match or exceed threshold",
		"POP-605": "If ALL HPAs are triggered, cluster memory capacity will match or exceed threshold",

		"POP-700": "Found taint that no pod can tolerate",
		"POP-704": "Insufficient memory on Node (MemoryPressure condition)",
		"POP-705": "Insufficient disk space on Node (DiskPressure condition)",
		"POP-706": "Insufficient PIDs on Node (PIDPressure condition)",
		"POP-707": "No network configured on Node (NetworkUnavailable condition)",
		"POP-709": "Node CPU threshold reached",
		"POP-710": "Node Memory threshold reached",

		"POP-901": "MinAvailable is greater than the number of pods currently running",

		"POP-1101": "Skip ports check. No explicit ports detected on pod",
		"POP-1102": "Unnamed service port in use",
		"POP-1106": "No target ports match service port",

		"POP-1120": "Unhealthy ReplicaSet",

		"POP-1200": "No pods match pod selector",
		"POP-1201": "No namespaces match namespace selector",
		"POP-1202": "No pods match pod selector",
		"POP-1203": "Allow All or Deny All policy in effect",
		"POP-1204": "Pod is not secured by a network policy",
		"POP-1206": "No pods matched IPBlock",
		"POP-1207": "No pods matched except IPBlock",
		"POP-1208": "No pods match pod selector in namespace",

		"POP-1300": "References a role which does not exist",

		"POP-1400": "Ingress LoadBalancer port reported an error",
		"POP-1401": "Ingress references a service backend which does not exist",
		"POP-1402": "Ingress references a service port which is not defined",
		"POP-1403": "Ingress backend uses a port#, prefer a named port",

		"POP-1500": "Cronjob is suspended",

		"POP-1601": "Unable to assert namespace label",
		"POP-1602": "References namespace which does not exists",
		"POP-1603": "Missing security namespace label",
		"POP-1604": "Namespace mismatch with security labels namespace",

		"POP-1700": "No cilium endpoints matched selector",
		"POP-1702": "References an unknown node IP",
		"POP-1703": "Pod owner is not in a running state",
		"POP-1704": "References an unknown owner ref",
	}

	// IssueIDtoUrl maps Popeye's issue codes to urls for wiki pages, blog
	// posts and other sources documenting the issue.
	//nolint:lll
	IssueIDtoUrl = map[string]string{}/* 115 elements not displayed */

)

Functions

func Parse

func Parse(ctx context.Context, results io.Reader) ([]v1alpha1.ClusterIssueSpec, error)

Parse transforms a Popeye report into a slice of <ClusterIssueSpec>. This function is called by the <report> package when a Popeye plugin is used.

Types

type Issue

type Issue struct {
	Level   Level  `json:"level"`
	Message string `json:"message"`
}

Issue represents a Popeye linter issue.

type Level

type Level int

Level tracks lint check level.

const (
	// OkLevel denotes no linting issues.
	OkLevel Level = iota
	// InfoLevel denotes FIY linting issues.
	InfoLevel
	// WarnLevel denotes a warning issue.
	WarnLevel
	// ErrorLevel denotes a serious issue.
	ErrorLevel
)

The <Level> type and enum were imported from Popeye's <config> package, whose import path is <github.com/derailed/popeye/pkg/config>.

type Popeye

type Popeye struct {
	Sections []Section `json:"sections"`
}

Popeye represents a Popeye report.

type Report

type Report struct {
	Popeye *Popeye `json:"popeye"`
}

Report wraps a Popeye report.

type Section added in v0.8.4

type Section struct {
	Linter string             `json:"linter"`
	GVR    string             `json:"gvr"`
	Issues map[string][]Issue `json:"issues"`
}

Sanitizer represents a Popeye linter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL