mirror of
https://github.com/fluxcd/flagger.git
synced 2026-09-05 02:47:17 +00:00
Merge pull request #1943 from immanuwell/fix/reconcile-traffic-distribution
fix: reconcile service trafficDistribution updates
This commit is contained in:
@@ -206,9 +206,11 @@ func (c *KubernetesDefaultRouter) reconcileService(canary *flaggerv1.Canary, nam
|
||||
|
||||
portsDiff := cmp.Diff(svcSpec.Ports, svc.Spec.Ports, cmpopts.SortSlices(sortPorts))
|
||||
selectorsDiff := cmp.Diff(svcSpec.Selector, svc.Spec.Selector)
|
||||
if portsDiff != "" || selectorsDiff != "" {
|
||||
trafficDistributionDiff := cmp.Diff(svcSpec.TrafficDistribution, svc.Spec.TrafficDistribution)
|
||||
if portsDiff != "" || selectorsDiff != "" || trafficDistributionDiff != "" {
|
||||
svcClone.Spec.Ports = svcSpec.Ports
|
||||
svcClone.Spec.Selector = svcSpec.Selector
|
||||
svcClone.Spec.TrafficDistribution = svcSpec.TrafficDistribution
|
||||
updateService = true
|
||||
}
|
||||
|
||||
|
||||
@@ -97,6 +97,51 @@ func TestServiceRouter_TrafficDistribution(t *testing.T) {
|
||||
assert.Equal(t, trafficDistribution, *apexSvc.Spec.TrafficDistribution)
|
||||
}
|
||||
|
||||
func TestServiceRouter_UpdateTrafficDistribution(t *testing.T) {
|
||||
mocks := newFixture(nil)
|
||||
router := &KubernetesDefaultRouter{
|
||||
kubeClient: mocks.kubeClient,
|
||||
flaggerClient: mocks.flaggerClient,
|
||||
logger: mocks.logger,
|
||||
}
|
||||
|
||||
err := router.Initialize(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = router.Reconcile(mocks.canary)
|
||||
require.NoError(t, err)
|
||||
|
||||
canary, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
canaryClone := canary.DeepCopy()
|
||||
trafficDistribution := "PreferClose"
|
||||
canaryClone.Spec.Service.TrafficDistribution = trafficDistribution
|
||||
|
||||
updatedCanary, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), canaryClone, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
err = router.Initialize(updatedCanary)
|
||||
require.NoError(t, err)
|
||||
err = router.Reconcile(updatedCanary)
|
||||
require.NoError(t, err)
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, canarySvc.Spec.TrafficDistribution)
|
||||
assert.Equal(t, trafficDistribution, *canarySvc.Spec.TrafficDistribution)
|
||||
|
||||
primarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, primarySvc.Spec.TrafficDistribution)
|
||||
assert.Equal(t, trafficDistribution, *primarySvc.Spec.TrafficDistribution)
|
||||
|
||||
apexSvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, apexSvc.Spec.TrafficDistribution)
|
||||
assert.Equal(t, trafficDistribution, *apexSvc.Spec.TrafficDistribution)
|
||||
}
|
||||
|
||||
func TestServiceRouter_Update(t *testing.T) {
|
||||
mocks := newFixture(nil)
|
||||
router := &KubernetesDefaultRouter{
|
||||
|
||||
Reference in New Issue
Block a user