mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
Upgrade to kube 1.18
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -269,7 +270,7 @@ func (c *Controller) syncHandler(key string) error {
|
||||
cdCopy.Status.Conditions = conditions
|
||||
cdCopy.Status.LastTransitionTime = metav1.Now()
|
||||
cdCopy.Status.Phase = flaggerv1.CanaryPhaseInitializing
|
||||
_, err := c.flaggerClient.FlaggerV1beta1().Canaries(cd.Namespace).UpdateStatus(cdCopy)
|
||||
_, err := c.flaggerClient.FlaggerV1beta1().Canaries(cd.Namespace).UpdateStatus(context.TODO(), cdCopy, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
c.logger.Errorf("%s status condition update error: %v", key, err)
|
||||
return fmt.Errorf("%s status condition update error: %w", key, err)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -103,7 +104,7 @@ func (c *Controller) alert(canary *flaggerv1.Canary, message string, metadata bo
|
||||
|
||||
// extract address from secret
|
||||
if provider.Spec.SecretRef != nil {
|
||||
secret, err := c.kubeClient.CoreV1().Secrets(providerNamespace).Get(provider.Spec.SecretRef.Name, metav1.GetOptions{})
|
||||
secret, err := c.kubeClient.CoreV1().Secrets(providerNamespace).Get(context.TODO(), provider.Spec.SecretRef.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
c.logger.With("canary", fmt.Sprintf("%s.%s", canary.Name, canary.Namespace)).
|
||||
Errorf("alert provider %s.%s secretRef error: %v", alert.ProviderRef.Name, providerNamespace, err)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -17,7 +18,7 @@ func (c *Controller) finalize(old interface{}) error {
|
||||
return fmt.Errorf("received unexpected object: %v", old)
|
||||
}
|
||||
|
||||
_, err := c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Get(canary.Name, metav1.GetOptions{})
|
||||
_, err := c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Get(context.TODO(), canary.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("get query error: %w", err)
|
||||
}
|
||||
@@ -106,7 +107,7 @@ func (c *Controller) addFinalizer(canary *flaggerv1.Canary) error {
|
||||
name, ns := canary.GetName(), canary.GetNamespace()
|
||||
err := retry.RetryOnConflict(retry.DefaultBackoff, func() (err error) {
|
||||
if !firstTry {
|
||||
canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(ns).Get(name, metav1.GetOptions{})
|
||||
canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(ns).Get(context.TODO(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("canary %s.%s get query failed: %w", name, ns, err)
|
||||
}
|
||||
@@ -114,7 +115,7 @@ func (c *Controller) addFinalizer(canary *flaggerv1.Canary) error {
|
||||
|
||||
cCopy := canary.DeepCopy()
|
||||
cCopy.ObjectMeta.Finalizers = append(cCopy.ObjectMeta.Finalizers, finalizer)
|
||||
_, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Update(cCopy)
|
||||
_, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Update(context.TODO(), cCopy, metav1.UpdateOptions{})
|
||||
firstTry = false
|
||||
return
|
||||
})
|
||||
@@ -133,7 +134,7 @@ func (c *Controller) removeFinalizer(canary *flaggerv1.Canary) error {
|
||||
name, ns := canary.GetName(), canary.GetNamespace()
|
||||
err := retry.RetryOnConflict(retry.DefaultBackoff, func() (err error) {
|
||||
if !firstTry {
|
||||
canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(ns).Get(name, metav1.GetOptions{})
|
||||
canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(ns).Get(context.TODO(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("canary %s.%s get query failed: %w", name, ns, err)
|
||||
}
|
||||
@@ -153,7 +154,7 @@ func (c *Controller) removeFinalizer(canary *flaggerv1.Canary) error {
|
||||
}
|
||||
|
||||
cCopy.ObjectMeta.Finalizers = nfs
|
||||
_, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Update(cCopy)
|
||||
_, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Update(context.TODO(), cCopy, metav1.UpdateOptions{})
|
||||
firstTry = false
|
||||
return
|
||||
})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
@@ -86,7 +87,7 @@ func (c *Controller) scheduleCanaries() {
|
||||
func (c *Controller) advanceCanary(name string, namespace string) {
|
||||
begin := time.Now()
|
||||
// check if the canary exists
|
||||
cd, err := c.flaggerClient.FlaggerV1beta1().Canaries(namespace).Get(name, metav1.GetOptions{})
|
||||
cd, err := c.flaggerClient.FlaggerV1beta1().Canaries(namespace).Get(context.TODO(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
c.logger.With("canary", fmt.Sprintf("%s.%s", name, namespace)).
|
||||
Errorf("Canary %s.%s not found", name, namespace)
|
||||
@@ -633,7 +634,7 @@ func (c *Controller) checkCanaryStatus(canary *flaggerv1.Canary, canaryControlle
|
||||
}
|
||||
|
||||
var err error
|
||||
canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Get(canary.Name, metav1.GetOptions{})
|
||||
canary, err = c.flaggerClient.FlaggerV1beta1().Canaries(canary.Namespace).Get(context.TODO(), canary.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
c.logger.With("canary", fmt.Sprintf("%s.%s", canary.Name, canary.Namespace)).Errorf("%v", err)
|
||||
return false
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
@@ -10,7 +11,7 @@ import (
|
||||
)
|
||||
|
||||
func assertPhase(flaggerClient clientset.Interface, canary string, phase flaggerv1.CanaryPhase) error {
|
||||
c, err := flaggerClient.FlaggerV1beta1().Canaries("default").Get(canary, metav1.GetOptions{})
|
||||
c, err := flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), canary, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
@@ -21,7 +22,7 @@ func TestScheduler_DaemonSetInit(t *testing.T) {
|
||||
mocks := newDaemonSetFixture(nil)
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
@@ -31,13 +32,13 @@ func TestScheduler_DaemonSetNewRevision(t *testing.T) {
|
||||
|
||||
// update
|
||||
dae2 := newDaemonSetTestDaemonSetV2()
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Get("podinfo", metav1.GetOptions{})
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
@@ -51,7 +52,7 @@ func TestScheduler_DaemonSetRollback(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// set a metric check to fail
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
cd := c.DeepCopy()
|
||||
@@ -64,7 +65,7 @@ func TestScheduler_DaemonSetRollback(t *testing.T) {
|
||||
},
|
||||
Query: "fail",
|
||||
})
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// run metric checks
|
||||
@@ -74,7 +75,7 @@ func TestScheduler_DaemonSetRollback(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFailed, c.Status.Phase)
|
||||
}
|
||||
@@ -85,16 +86,16 @@ func TestScheduler_DaemonSetSkipAnalysis(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// enable skip
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
cd.Spec.SkipAnalysis = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// update
|
||||
dae2 := newDaemonSetTestDaemonSetV2()
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -102,7 +103,7 @@ func TestScheduler_DaemonSetSkipAnalysis(t *testing.T) {
|
||||
// advance
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.True(t, c.Spec.SkipAnalysis)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
@@ -115,7 +116,7 @@ func TestScheduler_DaemonSetNewRevisionReset(t *testing.T) {
|
||||
|
||||
// first update
|
||||
dae2 := newDaemonSetTestDaemonSetV2()
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -131,7 +132,7 @@ func TestScheduler_DaemonSetNewRevisionReset(t *testing.T) {
|
||||
|
||||
// second update
|
||||
dae2.Spec.Template.Spec.ServiceAccountName = "test"
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -151,24 +152,24 @@ func TestScheduler_DaemonSetPromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check initialized status
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseInitialized, c.Status.Phase)
|
||||
|
||||
// update
|
||||
dae2 := newDaemonSetTestDaemonSetV2()
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err = mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect pod spec changes
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
config2 := newDaemonSetTestConfigMapV2()
|
||||
_, err = mocks.kubeClient.CoreV1().ConfigMaps("default").Update(config2)
|
||||
_, err = mocks.kubeClient.CoreV1().ConfigMaps("default").Update(context.TODO(), config2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
secret2 := newDaemonSetTestSecretV2()
|
||||
_, err = mocks.kubeClient.CoreV1().Secrets("default").Update(secret2)
|
||||
_, err = mocks.kubeClient.CoreV1().Secrets("default").Update(context.TODO(), secret2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect configs changes
|
||||
@@ -186,7 +187,7 @@ func TestScheduler_DaemonSetPromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check progressing status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseProgressing, c.Status.Phase)
|
||||
|
||||
@@ -194,7 +195,7 @@ func TestScheduler_DaemonSetPromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check promoting status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhasePromoting, c.Status.Phase)
|
||||
|
||||
@@ -207,30 +208,30 @@ func TestScheduler_DaemonSetPromotion(t *testing.T) {
|
||||
assert.Equal(t, 0, canaryWeight)
|
||||
assert.False(t, mirrored)
|
||||
|
||||
primaryDae, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
primaryDae, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
primaryImage := primaryDae.Spec.Template.Spec.Containers[0].Image
|
||||
canaryImage := dae2.Spec.Template.Spec.Containers[0].Image
|
||||
assert.Equal(t, canaryImage, primaryImage)
|
||||
|
||||
configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{})
|
||||
configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-env-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, config2.Data["color"], configPrimary.Data["color"])
|
||||
|
||||
secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{})
|
||||
secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-env-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, string(secret2.Data["apiKey"]), string(secretPrimary.Data["apiKey"]))
|
||||
|
||||
// check finalising status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFinalising, c.Status.Phase)
|
||||
|
||||
// scale canary to zero
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
}
|
||||
@@ -242,7 +243,7 @@ func TestScheduler_DaemonSetMirroring(t *testing.T) {
|
||||
|
||||
// update
|
||||
dae2 := newDaemonSetTestDaemonSetV2()
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect pod spec changes
|
||||
@@ -276,7 +277,7 @@ func TestScheduler_DaemonSetABTesting(t *testing.T) {
|
||||
|
||||
// update
|
||||
dae2 := newDaemonSetTestDaemonSetV2()
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(dae2)
|
||||
_, err := mocks.kubeClient.AppsV1().DaemonSets("default").Update(context.TODO(), dae2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect pod spec changes
|
||||
@@ -292,7 +293,7 @@ func TestScheduler_DaemonSetABTesting(t *testing.T) {
|
||||
assert.Equal(t, 100, canaryWeight)
|
||||
assert.False(t, mirrored)
|
||||
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// set max iterations
|
||||
@@ -306,12 +307,12 @@ func TestScheduler_DaemonSetABTesting(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check finalising status
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFinalising, c.Status.Phase)
|
||||
|
||||
// check if the container image tag was updated
|
||||
primaryDae, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
primaryDae, err := mocks.kubeClient.AppsV1().DaemonSets("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
primaryImage := primaryDae.Spec.Template.Spec.Containers[0].Image
|
||||
@@ -322,7 +323,7 @@ func TestScheduler_DaemonSetABTesting(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check rollout status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
}
|
||||
@@ -331,15 +332,15 @@ func TestScheduler_DaemonSetPortDiscovery(t *testing.T) {
|
||||
mocks := newDaemonSetFixture(nil)
|
||||
|
||||
// enable port discovery
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.Service.PortDiscovery = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-canary", metav1.GetOptions{})
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, canarySvc.Spec.Ports, 3)
|
||||
|
||||
@@ -362,17 +363,17 @@ func TestScheduler_DaemonSetPortDiscovery(t *testing.T) {
|
||||
func TestScheduler_DaemonSetTargetPortNumber(t *testing.T) {
|
||||
mocks := newDaemonSetFixture(nil)
|
||||
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.Service.Port = 80
|
||||
cd.Spec.Service.TargetPort = intstr.FromInt(9898)
|
||||
cd.Spec.Service.PortDiscovery = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-canary", metav1.GetOptions{})
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, canarySvc.Spec.Ports, 3)
|
||||
|
||||
@@ -395,17 +396,17 @@ func TestScheduler_DaemonSetTargetPortNumber(t *testing.T) {
|
||||
func TestScheduler_DaemonSetTargetPortName(t *testing.T) {
|
||||
mocks := newDaemonSetFixture(nil)
|
||||
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.Service.Port = 8080
|
||||
cd.Spec.Service.TargetPort = intstr.FromString("http")
|
||||
cd.Spec.Service.PortDiscovery = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-canary", metav1.GetOptions{})
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, canarySvc.Spec.Ports, 3)
|
||||
|
||||
@@ -460,7 +461,7 @@ func TestScheduler_DaemonSetAlerts(t *testing.T) {
|
||||
secret.Data = map[string][]byte{
|
||||
"address": []byte(ts.URL),
|
||||
}
|
||||
_, err := mocks.kubeClient.CoreV1().Secrets("default").Update(secret)
|
||||
_, err := mocks.kubeClient.CoreV1().Secrets("default").Update(context.TODO(), secret, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// init canary and send alerts
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sync"
|
||||
"testing"
|
||||
@@ -55,13 +56,13 @@ func (f fixture) makeCanaryReady(t *testing.T) {
|
||||
func (f fixture) makeReady(t *testing.T, name string) {
|
||||
p, err := f.kubeClient.AppsV1().
|
||||
Deployments("default").
|
||||
Get(name, metav1.GetOptions{})
|
||||
Get(context.TODO(), name, metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
p.Status = appsv1.DeploymentStatus{Replicas: 1, UpdatedReplicas: 1,
|
||||
ReadyReplicas: 1, AvailableReplicas: 1}
|
||||
|
||||
_, err = f.kubeClient.AppsV1().Deployments("default").Update(p)
|
||||
_, err = f.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), p, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
@@ -21,7 +22,7 @@ func TestScheduler_DeploymentInit(t *testing.T) {
|
||||
mocks := newDeploymentFixture(nil)
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
@@ -39,13 +40,13 @@ func TestScheduler_DeploymentNewRevision(t *testing.T) {
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
c, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int32(1), *c.Spec.Replicas)
|
||||
}
|
||||
@@ -66,7 +67,7 @@ func TestScheduler_DeploymentRollback(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// set a metric check to fail
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd := c.DeepCopy()
|
||||
cd.Spec.Analysis.Metrics = append(c.Spec.Analysis.Metrics, flaggerv1.CanaryMetric{
|
||||
@@ -78,7 +79,7 @@ func TestScheduler_DeploymentRollback(t *testing.T) {
|
||||
},
|
||||
Query: "fail",
|
||||
})
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// run metric checks
|
||||
@@ -90,7 +91,7 @@ func TestScheduler_DeploymentRollback(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
// check status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFailed, c.Status.Phase)
|
||||
@@ -108,15 +109,15 @@ func TestScheduler_DeploymentSkipAnalysis(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// enable skip
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.SkipAnalysis = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -126,7 +127,7 @@ func TestScheduler_DeploymentSkipAnalysis(t *testing.T) {
|
||||
// advance
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.True(t, c.Spec.SkipAnalysis)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
@@ -152,7 +153,7 @@ func TestScheduler_DeploymentAnalysisPhases(t *testing.T) {
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -197,7 +198,7 @@ func TestScheduler_DeploymentBlueGreenAnalysisPhases(t *testing.T) {
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes (progressing)
|
||||
@@ -240,7 +241,7 @@ func TestScheduler_DeploymentNewRevisionReset(t *testing.T) {
|
||||
|
||||
// first update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -258,7 +259,7 @@ func TestScheduler_DeploymentNewRevisionReset(t *testing.T) {
|
||||
|
||||
// second update
|
||||
dep2.Spec.Template.Spec.ServiceAccountName = "test"
|
||||
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect changes
|
||||
@@ -284,13 +285,13 @@ func TestScheduler_DeploymentPromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check initialized status
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseInitialized, c.Status.Phase)
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err = mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect pod spec changes
|
||||
@@ -298,11 +299,11 @@ func TestScheduler_DeploymentPromotion(t *testing.T) {
|
||||
mocks.makeCanaryReady(t)
|
||||
|
||||
config2 := newDeploymentTestConfigMapV2()
|
||||
_, err = mocks.kubeClient.CoreV1().ConfigMaps("default").Update(config2)
|
||||
_, err = mocks.kubeClient.CoreV1().ConfigMaps("default").Update(context.TODO(), config2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
secret2 := newDeploymentTestSecretV2()
|
||||
_, err = mocks.kubeClient.CoreV1().Secrets("default").Update(secret2)
|
||||
_, err = mocks.kubeClient.CoreV1().Secrets("default").Update(context.TODO(), secret2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect configs changes
|
||||
@@ -320,7 +321,7 @@ func TestScheduler_DeploymentPromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check progressing status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseProgressing, c.Status.Phase)
|
||||
|
||||
@@ -328,7 +329,7 @@ func TestScheduler_DeploymentPromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check promoting status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhasePromoting, c.Status.Phase)
|
||||
|
||||
@@ -341,30 +342,30 @@ func TestScheduler_DeploymentPromotion(t *testing.T) {
|
||||
assert.Equal(t, 0, canaryWeight)
|
||||
assert.False(t, mirrored)
|
||||
|
||||
primaryDep, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
primaryDep, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
primaryImage := primaryDep.Spec.Template.Spec.Containers[0].Image
|
||||
canaryImage := dep2.Spec.Template.Spec.Containers[0].Image
|
||||
assert.Equal(t, canaryImage, primaryImage)
|
||||
|
||||
configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get("podinfo-config-env-primary", metav1.GetOptions{})
|
||||
configPrimary, err := mocks.kubeClient.CoreV1().ConfigMaps("default").Get(context.TODO(), "podinfo-config-env-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, config2.Data["color"], configPrimary.Data["color"])
|
||||
|
||||
secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get("podinfo-secret-env-primary", metav1.GetOptions{})
|
||||
secretPrimary, err := mocks.kubeClient.CoreV1().Secrets("default").Get(context.TODO(), "podinfo-secret-env-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, string(secret2.Data["apiKey"]), string(secretPrimary.Data["apiKey"]))
|
||||
|
||||
// check finalising status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFinalising, c.Status.Phase)
|
||||
|
||||
// scale canary to zero
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
}
|
||||
@@ -383,7 +384,7 @@ func TestScheduler_DeploymentMirroring(t *testing.T) {
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect pod spec changes
|
||||
@@ -424,7 +425,7 @@ func TestScheduler_DeploymentABTesting(t *testing.T) {
|
||||
|
||||
// update
|
||||
dep2 := newDeploymentTestDeploymentV2()
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(dep2)
|
||||
_, err := mocks.kubeClient.AppsV1().Deployments("default").Update(context.TODO(), dep2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect pod spec changes
|
||||
@@ -441,7 +442,7 @@ func TestScheduler_DeploymentABTesting(t *testing.T) {
|
||||
assert.Equal(t, 100, canaryWeight)
|
||||
assert.False(t, mirrored)
|
||||
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// set max iterations
|
||||
@@ -455,12 +456,12 @@ func TestScheduler_DeploymentABTesting(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check finalising status
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFinalising, c.Status.Phase)
|
||||
|
||||
// check if the container image tag was updated
|
||||
primaryDep, err := mocks.kubeClient.AppsV1().Deployments("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
primaryDep, err := mocks.kubeClient.AppsV1().Deployments("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
primaryImage := primaryDep.Spec.Template.Spec.Containers[0].Image
|
||||
@@ -471,7 +472,7 @@ func TestScheduler_DeploymentABTesting(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check rollout status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
}
|
||||
@@ -480,15 +481,15 @@ func TestScheduler_DeploymentPortDiscovery(t *testing.T) {
|
||||
mocks := newDeploymentFixture(nil)
|
||||
|
||||
// enable port discovery
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.Service.PortDiscovery = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-canary", metav1.GetOptions{})
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, canarySvc.Spec.Ports, 3)
|
||||
|
||||
@@ -511,17 +512,17 @@ func TestScheduler_DeploymentPortDiscovery(t *testing.T) {
|
||||
func TestScheduler_DeploymentTargetPortNumber(t *testing.T) {
|
||||
mocks := newDeploymentFixture(nil)
|
||||
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.Service.Port = 80
|
||||
cd.Spec.Service.TargetPort = intstr.FromInt(9898)
|
||||
cd.Spec.Service.PortDiscovery = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-canary", metav1.GetOptions{})
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, canarySvc.Spec.Ports, 3)
|
||||
|
||||
@@ -544,17 +545,17 @@ func TestScheduler_DeploymentTargetPortNumber(t *testing.T) {
|
||||
func TestScheduler_DeploymentTargetPortName(t *testing.T) {
|
||||
mocks := newDeploymentFixture(nil)
|
||||
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
cd, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
cd.Spec.Service.Port = 8080
|
||||
cd.Spec.Service.TargetPort = intstr.FromString("http")
|
||||
cd.Spec.Service.PortDiscovery = true
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(cd)
|
||||
_, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Update(context.TODO(), cd, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-canary", metav1.GetOptions{})
|
||||
canarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-canary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
require.Len(t, canarySvc.Spec.Ports, 3)
|
||||
|
||||
@@ -609,7 +610,7 @@ func TestScheduler_DeploymentAlerts(t *testing.T) {
|
||||
secret.Data = map[string][]byte{
|
||||
"address": []byte(ts.URL),
|
||||
}
|
||||
_, err := mocks.kubeClient.CoreV1().Secrets("default").Update(secret)
|
||||
_, err := mocks.kubeClient.CoreV1().Secrets("default").Update(context.TODO(), secret, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// init canary and send alerts
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -169,7 +170,7 @@ func (c *Controller) runMetricChecks(canary *flaggerv1.Canary) bool {
|
||||
|
||||
var credentials map[string][]byte
|
||||
if template.Spec.Provider.SecretRef != nil {
|
||||
secret, err := c.kubeClient.CoreV1().Secrets(namespace).Get(template.Spec.Provider.SecretRef.Name, metav1.GetOptions{})
|
||||
secret, err := c.kubeClient.CoreV1().Secrets(namespace).Get(context.TODO(), template.Spec.Provider.SecretRef.Name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
c.recordEventErrorf(canary, "Metric template %s.%s secret %s error: %v",
|
||||
metric.TemplateRef.Name, namespace, template.Spec.Provider.SecretRef.Name, err)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
@@ -17,13 +18,13 @@ func TestScheduler_ServicePromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check initialized status
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err := mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseInitialized, c.Status.Phase)
|
||||
|
||||
// update
|
||||
svc2 := newDeploymentTestServiceV2()
|
||||
_, err = mocks.kubeClient.CoreV1().Services("default").Update(svc2)
|
||||
_, err = mocks.kubeClient.CoreV1().Services("default").Update(context.TODO(), svc2, metav1.UpdateOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
// detect service spec changes
|
||||
@@ -41,7 +42,7 @@ func TestScheduler_ServicePromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check progressing status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseProgressing, c.Status.Phase)
|
||||
|
||||
@@ -49,7 +50,7 @@ func TestScheduler_ServicePromotion(t *testing.T) {
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
// check promoting status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhasePromoting, c.Status.Phase)
|
||||
|
||||
@@ -62,7 +63,7 @@ func TestScheduler_ServicePromotion(t *testing.T) {
|
||||
assert.Equal(t, 0, canaryWeight)
|
||||
assert.False(t, mirrored)
|
||||
|
||||
primarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get("podinfo-primary", metav1.GetOptions{})
|
||||
primarySvc, err := mocks.kubeClient.CoreV1().Services("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
primaryLabelValue := primarySvc.Spec.Selector["app"]
|
||||
@@ -70,14 +71,14 @@ func TestScheduler_ServicePromotion(t *testing.T) {
|
||||
assert.Equal(t, canaryLabelValue, primaryLabelValue)
|
||||
|
||||
// check finalising status
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseFinalising, c.Status.Phase)
|
||||
|
||||
// scale canary to zero
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get("podinfo", metav1.GetOptions{})
|
||||
c, err = mocks.flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), "podinfo", metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, flaggerv1.CanaryPhaseSucceeded, c.Status.Phase)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user