Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions internal/k8s/component.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"log/slog"
"strings"

v1 "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

Expand All @@ -26,7 +26,7 @@ func (c *Client) GetOpenshiftComponentFromImage(image string) (*OpenshiftCompone
// GetOpenshiftComponentFromPod extracts component information from a pod,
// preferring pod labels for the component name but using image metadata for
// source location and maintainer information.
func (c *Client) GetOpenshiftComponentFromPod(pod v1.Pod) (*OpenshiftComponent, error) {
func (c *Client) GetOpenshiftComponentFromPod(pod corev1.Pod) (*OpenshiftComponent, error) {
if len(pod.Spec.Containers) == 0 {
return nil, fmt.Errorf("pod has no containers")
}
Expand Down Expand Up @@ -162,7 +162,7 @@ func (c *Client) extractRegistryFromImage(image string) string {
// 3. label named 'app.kubernetes.io/name'
// 4. container.Name
// 5. name determined from container.Image
func (c *Client) extractComponentFromPod(pod v1.Pod, container v1.Container) string {
func (c *Client) extractComponentFromPod(pod corev1.Pod, container corev1.Container) string {
if component, exists := pod.Labels["app"]; exists {
return component
}
Expand All @@ -178,7 +178,7 @@ func (c *Client) extractComponentFromPod(pod v1.Pod, container v1.Container) str
return c.extractComponentNameFromImage(container.Image)
}

func (c *Client) extractMaintainerFromPod(pod v1.Pod) string {
func (c *Client) extractMaintainerFromPod(pod corev1.Pod) string {
if strings.HasPrefix(pod.Namespace, "openshift-") {
return "openshift"
}
Expand Down
20 changes: 10 additions & 10 deletions internal/k8s/component_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package k8s
import (
"testing"

v1 "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

Expand Down Expand Up @@ -155,51 +155,51 @@ func TestExtractComponentFromPod(t *testing.T) {
tests := []struct {
name string
labels map[string]string
container v1.Container
container corev1.Container
want string
}{
{
name: "app label",
labels: map[string]string{"app": "my-app"},
container: v1.Container{Name: "ctr", Image: "quay.io/x/y:z"},
container: corev1.Container{Name: "ctr", Image: "quay.io/x/y:z"},
want: "my-app",
},
{
name: "component label",
labels: map[string]string{"component": "my-component"},
container: v1.Container{Name: "ctr", Image: "quay.io/x/y:z"},
container: corev1.Container{Name: "ctr", Image: "quay.io/x/y:z"},
want: "my-component",
},
{
name: "app.kubernetes.io/name label",
labels: map[string]string{"app.kubernetes.io/name": "k8s-app"},
container: v1.Container{Name: "ctr", Image: "quay.io/x/y:z"},
container: corev1.Container{Name: "ctr", Image: "quay.io/x/y:z"},
want: "k8s-app",
},
{
name: "app label takes precedence over component",
labels: map[string]string{"app": "winner", "component": "loser"},
container: v1.Container{Name: "ctr"},
container: corev1.Container{Name: "ctr"},
want: "winner",
},
{
name: "falls back to container name",
labels: map[string]string{},
container: v1.Container{Name: "my-container", Image: "nginx"},
container: corev1.Container{Name: "my-container", Image: "nginx"},
want: "my-container",
},
{
name: "falls back to image name",
labels: map[string]string{},
container: v1.Container{Name: "", Image: "quay.io/org/my-image:v1"},
container: corev1.Container{Name: "", Image: "quay.io/org/my-image:v1"},
want: "my-image",
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
pod := v1.Pod{
pod := corev1.Pod{
ObjectMeta: metav1.ObjectMeta{Labels: tt.labels},
}
got := c.extractComponentFromPod(pod, tt.container)
Expand Down Expand Up @@ -229,7 +229,7 @@ func TestExtractMaintainerFromPod(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
pod := v1.Pod{
pod := corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Namespace: tt.namespace,
Labels: tt.labels,
Expand Down
22 changes: 11 additions & 11 deletions internal/k8s/discovery.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"strings"
"time"

v1 "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/remotecommand"
Expand All @@ -24,21 +24,21 @@ const (
procDiscoveryShell = `cat /proc/net/tcp /proc/net/tcp6 2>/dev/null; printf '\n` + inodeMapSentinel + `\n'; for p in /proc/[0-9]*; do [ -f "$p/comm" ] || continue; comm=$(cat "$p/comm" 2>/dev/null) || continue; for fd in "$p"/fd/*; do target=$(readlink "$fd" 2>/dev/null) || continue; case "$target" in socket:\[*) inode=${target#socket:[}; inode=${inode%]}; echo "$inode $comm";; esac; done; done`
)

func DiscoverPortsFromPodSpec(pod *v1.Pod) ([]int, error) {
func DiscoverPortsFromPodSpec(pod *corev1.Pod) ([]int, error) {
slog.Debug("discovering ports from API server", "namespace", pod.Namespace, "pod", pod.Name)

var ports []int
for _, container := range pod.Spec.Containers {
for _, port := range container.Ports {
if port.Protocol == v1.ProtocolTCP {
if port.Protocol == corev1.ProtocolTCP {
ports = append(ports, int(port.ContainerPort))
}
}
}

for _, container := range pod.Spec.InitContainers {
for _, port := range container.Ports {
if port.Protocol == v1.ProtocolTCP {
if port.Protocol == corev1.ProtocolTCP {
ports = append(ports, int(port.ContainerPort))
}
}
Expand All @@ -56,14 +56,14 @@ func DiscoverPortsFromPodSpec(pod *v1.Pod) ([]int, error) {
// DiscoverPortsFromSecondaryContainers returns TCP ports from containers other than execContainer.
//
// TODO(refactor): extract shared tcpPortsFromContainers helper; drop never-used error return from DiscoverPortsFromPodSpec
func DiscoverPortsFromSecondaryContainers(pod *v1.Pod, execContainer string) []int {
func DiscoverPortsFromSecondaryContainers(pod *corev1.Pod, execContainer string) []int {
var ports []int
for _, container := range pod.Spec.Containers {
if container.Name == execContainer {
continue
}
for _, port := range container.Ports {
if port.Protocol == v1.ProtocolTCP {
if port.Protocol == corev1.ProtocolTCP {
ports = append(ports, int(port.ContainerPort))
}
}
Expand All @@ -89,7 +89,7 @@ func (c *Client) DiscoverPortsFromProc(pod PodInfo) ([]int, error) {
Namespace(pod.Namespace).
SubResource("exec")

req.VersionedParams(&v1.PodExecOptions{
req.VersionedParams(&corev1.PodExecOptions{
Container: containerName,
Command: command,
Stdin: false,
Expand Down Expand Up @@ -266,14 +266,14 @@ func decodeProcNetAddr(hexAddr string) string {
//
// Port references that use named ports (e.g. "healthz") are resolved against
// each container's declared Ports list.
func GetPlaintextProbePorts(pod *v1.Pod) map[int]bool {
func GetPlaintextProbePorts(pod *corev1.Pod) map[int]bool {
result := make(map[int]bool)

allContainers := append(pod.Spec.Containers, pod.Spec.InitContainers...)
for _, container := range allContainers {
namedPorts := buildNamedPortMap(container.Ports)

for _, probe := range []*v1.Probe{
for _, probe := range []*corev1.Probe{
container.LivenessProbe,
container.ReadinessProbe,
container.StartupProbe,
Expand All @@ -283,7 +283,7 @@ func GetPlaintextProbePorts(pod *v1.Pod) map[int]bool {
}
switch {
case probe.HTTPGet != nil:
if probe.HTTPGet.Scheme == v1.URISchemeHTTPS {
if probe.HTTPGet.Scheme == corev1.URISchemeHTTPS {
// HTTPS probe — TLS is explicitly in use; keep scanning this port.
continue
}
Expand All @@ -304,7 +304,7 @@ func GetPlaintextProbePorts(pod *v1.Pod) map[int]bool {
}

// buildNamedPortMap returns a name → port number map from a container's port list.
func buildNamedPortMap(ports []v1.ContainerPort) map[string]int {
func buildNamedPortMap(ports []corev1.ContainerPort) map[string]int {
m := make(map[string]int, len(ports))
for _, p := range ports {
if p.Name != "" {
Expand Down
Loading