Fix initContainer failed to get its own field value as env values
This commit is contained in:
		@@ -177,6 +177,11 @@ func findContainerInPod(pod *v1.Pod, containerName string) (*v1.Container, error
 | 
				
			|||||||
			return &container, nil
 | 
								return &container, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						for _, container := range pod.Spec.InitContainers {
 | 
				
			||||||
 | 
							if container.Name == containerName {
 | 
				
			||||||
 | 
								return &container, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	return nil, fmt.Errorf("container %s not found", containerName)
 | 
						return nil, fmt.Errorf("container %s not found", containerName)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -137,6 +137,72 @@ func TestExtractResourceValue(t *testing.T) {
 | 
				
			|||||||
			pod:           getPod("foo", "", "", "10Mi", "100Mi"),
 | 
								pod:           getPod("foo", "", "", "10Mi", "100Mi"),
 | 
				
			||||||
			expectedValue: "104857600",
 | 
								expectedValue: "104857600",
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "limits.cpu",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "", "9", "", ""),
 | 
				
			||||||
 | 
								expectedValue: "9",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "requests.cpu",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "", "", "", ""),
 | 
				
			||||||
 | 
								expectedValue: "0",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "requests.cpu",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "8", "", "", ""),
 | 
				
			||||||
 | 
								expectedValue: "8",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "requests.cpu",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "100m", "", "", ""),
 | 
				
			||||||
 | 
								expectedValue: "1",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "requests.cpu",
 | 
				
			||||||
 | 
									Divisor:  resource.MustParse("100m"),
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "1200m", "", "", ""),
 | 
				
			||||||
 | 
								expectedValue: "12",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "requests.memory",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "", "", "100Mi", ""),
 | 
				
			||||||
 | 
								expectedValue: "104857600",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "requests.memory",
 | 
				
			||||||
 | 
									Divisor:  resource.MustParse("1Mi"),
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "", "", "100Mi", "1Gi"),
 | 
				
			||||||
 | 
								expectedValue: "100",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								fs: &v1.ResourceFieldSelector{
 | 
				
			||||||
 | 
									Resource: "limits.memory",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								cName:         "init-foo",
 | 
				
			||||||
 | 
								pod:           getPod("foo", "", "", "10Mi", "100Mi"),
 | 
				
			||||||
 | 
								expectedValue: "104857600",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	as := assert.New(t)
 | 
						as := assert.New(t)
 | 
				
			||||||
	for idx, tc := range cases {
 | 
						for idx, tc := range cases {
 | 
				
			||||||
@@ -175,6 +241,12 @@ func getPod(cname, cpuRequest, cpuLimit, memoryRequest, memoryLimit string) *v1.
 | 
				
			|||||||
					Resources: resources,
 | 
										Resources: resources,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
 | 
								InitContainers: []v1.Container{
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										Name:      "init-" + cname,
 | 
				
			||||||
 | 
										Resources: resources,
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user