mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-24 11:01:26 +00:00
Merge pull request #99750 from robscott/endpointslice-strategy
Incrementing EndpointSlice generation when labels change
This commit is contained in:
commit
76f2a4d5fd
@ -65,7 +65,7 @@ func (endpointSliceStrategy) PrepareForUpdate(ctx context.Context, obj, old runt
|
||||
newEPS.ObjectMeta = v1.ObjectMeta{}
|
||||
oldEPS.ObjectMeta = v1.ObjectMeta{}
|
||||
|
||||
if !apiequality.Semantic.DeepEqual(newEPS, oldEPS) {
|
||||
if !apiequality.Semantic.DeepEqual(newEPS, oldEPS) || !apiequality.Semantic.DeepEqual(ogNewMeta.Labels, ogOldMeta.Labels) {
|
||||
ogNewMeta.Generation = ogOldMeta.Generation + 1
|
||||
}
|
||||
|
||||
|
@ -17,9 +17,11 @@ limitations under the License.
|
||||
package endpointslice
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
"k8s.io/kubernetes/pkg/apis/discovery"
|
||||
@ -535,3 +537,94 @@ func Test_dropDisabledFieldsOnUpdate(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPrepareForUpdate(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
oldEPS *discovery.EndpointSlice
|
||||
newEPS *discovery.EndpointSlice
|
||||
expectedEPS *discovery.EndpointSlice
|
||||
}{
|
||||
{
|
||||
name: "unchanged EPS should not increment generation",
|
||||
oldEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{Generation: 1},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
newEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{Generation: 1},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
expectedEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{Generation: 1},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "changed endpoints should increment generation",
|
||||
oldEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{Generation: 1},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
newEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{Generation: 1},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.5"},
|
||||
}},
|
||||
},
|
||||
expectedEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{Generation: 2},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.5"},
|
||||
}},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "changed labels should increment generation",
|
||||
oldEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Generation: 1,
|
||||
Labels: map[string]string{"example": "one"},
|
||||
},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
newEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Generation: 1,
|
||||
Labels: map[string]string{"example": "two"},
|
||||
},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
expectedEPS: &discovery.EndpointSlice{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Generation: 2,
|
||||
Labels: map[string]string{"example": "two"},
|
||||
},
|
||||
Endpoints: []discovery.Endpoint{{
|
||||
Addresses: []string{"1.2.3.4"},
|
||||
}},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
Strategy.PrepareForUpdate(context.TODO(), tc.newEPS, tc.oldEPS)
|
||||
if !apiequality.Semantic.DeepEqual(tc.newEPS, tc.expectedEPS) {
|
||||
t.Errorf("Expected %+v\nGot: %+v", tc.expectedEPS, tc.newEPS)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user