check sidecar featuregate in getFinishedTime
This commit is contained in:
		| @@ -23,9 +23,11 @@ import ( | |||||||
|  |  | ||||||
| 	v1 "k8s.io/api/core/v1" | 	v1 "k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/util/sets" | 	"k8s.io/apimachinery/pkg/util/sets" | ||||||
|  | 	utilfeature "k8s.io/apiserver/pkg/util/feature" | ||||||
| 	"k8s.io/client-go/tools/cache" | 	"k8s.io/client-go/tools/cache" | ||||||
| 	"k8s.io/klog/v2" | 	"k8s.io/klog/v2" | ||||||
| 	apipod "k8s.io/kubernetes/pkg/api/v1/pod" | 	apipod "k8s.io/kubernetes/pkg/api/v1/pod" | ||||||
|  | 	"k8s.io/kubernetes/pkg/features" | ||||||
| 	"k8s.io/utils/clock" | 	"k8s.io/utils/clock" | ||||||
| 	"k8s.io/utils/ptr" | 	"k8s.io/utils/ptr" | ||||||
| ) | ) | ||||||
| @@ -185,6 +187,7 @@ func getFinishedTime(p *v1.Pod) time.Time { | |||||||
|  |  | ||||||
| func getFinishTimeFromContainers(p *v1.Pod) *time.Time { | func getFinishTimeFromContainers(p *v1.Pod) *time.Time { | ||||||
| 	finishTime := latestFinishTime(nil, p.Status.ContainerStatuses, nil) | 	finishTime := latestFinishTime(nil, p.Status.ContainerStatuses, nil) | ||||||
|  | 	if utilfeature.DefaultFeatureGate.Enabled(features.SidecarContainers) { | ||||||
| 		// We need to check InitContainerStatuses here also, | 		// We need to check InitContainerStatuses here also, | ||||||
| 		// because with the sidecar (restartable init) containers, | 		// because with the sidecar (restartable init) containers, | ||||||
| 		// sidecar containers will always finish later than regular containers. | 		// sidecar containers will always finish later than regular containers. | ||||||
| @@ -194,9 +197,11 @@ func getFinishTimeFromContainers(p *v1.Pod) *time.Time { | |||||||
| 				names.Insert(c.Name) | 				names.Insert(c.Name) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	return latestFinishTime(finishTime, p.Status.InitContainerStatuses, func(status v1.ContainerStatus) bool { | 		finishTime = latestFinishTime(finishTime, p.Status.InitContainerStatuses, func(status v1.ContainerStatus) bool { | ||||||
| 			return names.Has(status.Name) | 			return names.Has(status.Name) | ||||||
| 		}) | 		}) | ||||||
|  | 	} | ||||||
|  | 	return finishTime | ||||||
| } | } | ||||||
|  |  | ||||||
| func latestFinishTime(prevFinishTime *time.Time, cs []v1.ContainerStatus, check func(status v1.ContainerStatus) bool) *time.Time { | func latestFinishTime(prevFinishTime *time.Time, cs []v1.ContainerStatus, check func(status v1.ContainerStatus) bool) *time.Time { | ||||||
|   | |||||||
| @@ -23,7 +23,10 @@ import ( | |||||||
| 	"github.com/google/go-cmp/cmp" | 	"github.com/google/go-cmp/cmp" | ||||||
| 	v1 "k8s.io/api/core/v1" | 	v1 "k8s.io/api/core/v1" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
|  | 	utilfeature "k8s.io/apiserver/pkg/util/feature" | ||||||
|  | 	featuregatetesting "k8s.io/component-base/featuregate/testing" | ||||||
| 	"k8s.io/klog/v2/ktesting" | 	"k8s.io/klog/v2/ktesting" | ||||||
|  | 	"k8s.io/kubernetes/pkg/features" | ||||||
| 	clocktesting "k8s.io/utils/clock/testing" | 	clocktesting "k8s.io/utils/clock/testing" | ||||||
| 	"k8s.io/utils/ptr" | 	"k8s.io/utils/ptr" | ||||||
| ) | ) | ||||||
| @@ -200,6 +203,7 @@ func TestNewBackoffRecord(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestGetFinishedTime(t *testing.T) { | func TestGetFinishedTime(t *testing.T) { | ||||||
|  | 	featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.SidecarContainers, true) | ||||||
| 	defaultTestTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) | 	defaultTestTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) | ||||||
| 	defaultTestTimeMinus30s := defaultTestTime.Add(-30 * time.Second) | 	defaultTestTimeMinus30s := defaultTestTime.Add(-30 * time.Second) | ||||||
| 	containerRestartPolicyAlways := v1.ContainerRestartPolicyAlways | 	containerRestartPolicyAlways := v1.ContainerRestartPolicyAlways | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 AxeZhan
					AxeZhan