Skip to content

Commit 24787be

Browse files
authored
Merge pull request #45 from ssmiller25/fix/44/skipincorrectparams
Fix image generation when Envoy/Istio logging tags included
2 parents 05f0688 + 9f21322 commit 24787be

2 files changed

Lines changed: 55 additions & 2 deletions

File tree

internal/manifest/kubernetes.go

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,24 @@ func getPodImages(resource []byte) ([]string, error) {
225225

226226
func getImagesFromContainers(containers []corev1.Container) []string {
227227
var images []string
228+
229+
var imgStringsToFilter []string
230+
231+
//Work-around for mis-identified image parameters that include a URL
232+
imgStringsToFilter = append(imgStringsToFilter, "http://")
233+
imgStringsToFilter = append(imgStringsToFilter, "https://")
234+
235+
//Work around for Envoy/Istio log parameters (https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/run-envoy.html#debugging-envoy)
236+
// Too many componetns, so just targetting log levels. Should be low instance of collusion between these values and actual image tags
237+
238+
imgStringsToFilter = append(imgStringsToFilter, ":trace")
239+
imgStringsToFilter = append(imgStringsToFilter, ":debug")
240+
imgStringsToFilter = append(imgStringsToFilter, ":info")
241+
imgStringsToFilter = append(imgStringsToFilter, ":warn")
242+
imgStringsToFilter = append(imgStringsToFilter, ":error")
243+
imgStringsToFilter = append(imgStringsToFilter, ":critical")
244+
imgStringsToFilter = append(imgStringsToFilter, ":off")
245+
228246
for _, container := range containers {
229247
images = append(images, container.Image)
230248

@@ -240,8 +258,16 @@ func getImagesFromContainers(containers []corev1.Container) []string {
240258
continue
241259
}
242260

243-
//Work-around for mis-identified image
244-
if strings.Contains(image, "http://") || strings.Contains(image, "https://") {
261+
// Filter out specific strings that are mis-interpreted as container images
262+
var skiploop bool = false
263+
264+
for _, string := range imgStringsToFilter {
265+
if strings.Contains(image, string) {
266+
skiploop = true
267+
}
268+
}
269+
270+
if skiploop {
245271
continue
246272
}
247273

internal/manifest/kubernetes_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,30 @@ func TestGetImagesFromContainers_WithURLParameter(t *testing.T) {
5454
}
5555

5656
}
57+
58+
// Envoy/Istio specify their log levels as component:level (See https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/run-envoy.html#debugging-envoy)
59+
func TestGetImagesFromContainers_WithLogComponent(t *testing.T) {
60+
containers := []corev1.Container{
61+
{
62+
Image: "baseimage:v1",
63+
Args: []string{
64+
"--proxyComponentLogLevel=misc:error",
65+
"--log_output_level=default:info",
66+
},
67+
},
68+
}
69+
actual := getImagesFromContainers(containers)
70+
71+
if !contains(actual, "baseimage:v1") {
72+
t.Errorf("expected baseimage:v1 to exist in list of images but it did not: %v", actual)
73+
}
74+
75+
if contains(actual, "misc:error") {
76+
t.Errorf("Invalid image parsing for args contain misc:error parameter: %v", actual)
77+
}
78+
79+
if contains(actual, "default:info") {
80+
t.Errorf("Invalid image parsing for args contain default:info parameter: %v", actual)
81+
}
82+
83+
}

0 commit comments

Comments
 (0)