pkg/canary: refator error messages

This commit is contained in:
mathetake
2020-03-08 10:42:51 +09:00
parent 2ec24bb17d
commit 5843b02931
6 changed files with 28 additions and 29 deletions
+2 -2
View File
@@ -272,7 +272,7 @@ func (ct *ConfigTracker) CreatePrimaryConfigs(cd *flaggerv1.Canary, refs map[str
case ConfigRefMap:
config, err := ct.KubeClient.CoreV1().ConfigMaps(cd.Namespace).Get(ref.Name, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("configmap %s.%s query failed : %w", ref.Name, cd.Name, err)
return fmt.Errorf("configmap %s.%s get query failed : %w", ref.Name, cd.Name, err)
}
primaryName := fmt.Sprintf("%s-primary", config.GetName())
primaryConfigMap := &corev1.ConfigMap{
@@ -309,7 +309,7 @@ func (ct *ConfigTracker) CreatePrimaryConfigs(cd *flaggerv1.Canary, refs map[str
case ConfigRefSecret:
secret, err := ct.KubeClient.CoreV1().Secrets(cd.Namespace).Get(ref.Name, metav1.GetOptions{})
if err != nil {
return err
return fmt.Errorf("secret %s.%s get query failed : %w", ref.Name, cd.Name, err)
}
primaryName := fmt.Sprintf("%s-primary", secret.GetName())
primarySecret := &corev1.Secret{
+5 -4
View File
@@ -32,7 +32,7 @@ func (c *DaemonSetController) ScaleToZero(cd *flaggerv1.Canary) error {
targetName := cd.Spec.TargetRef.Name
dae, err := c.kubeClient.AppsV1().DaemonSets(cd.Namespace).Get(targetName, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("daemonset %s.%s query error: %w", targetName, cd.Namespace, err)
return fmt.Errorf("daemonset %s.%s get query error: %w", targetName, cd.Namespace, err)
}
daeCopy := dae.DeepCopy()
@@ -72,8 +72,8 @@ func (c *DaemonSetController) ScaleFromZero(cd *flaggerv1.Canary) error {
return nil
}
// Initialize creates the primary DaemonSet and
// delete the canary DaemonSet and returns the pod selector label and container ports
// Initialize creates the primary DaemonSet, scales down the canary DaemonSet,
// and returns the pod selector label and container ports
func (c *DaemonSetController) Initialize(cd *flaggerv1.Canary, skipLivenessChecks bool) (err error) {
err = c.createPrimaryDaemonSet(cd)
if err != nil {
@@ -87,7 +87,8 @@ func (c *DaemonSetController) Initialize(cd *flaggerv1.Canary, skipLivenessCheck
}
}
c.logger.With("canary", fmt.Sprintf("%s.%s", cd.Name, cd.Namespace)).Infof("Scaling down %s.%s", cd.Spec.TargetRef.Name, cd.Namespace)
c.logger.With("canary", fmt.Sprintf("%s.%s", cd.Name, cd.Namespace)).
Infof("Scaling down DaemonSet %s.%s", cd.Spec.TargetRef.Name, cd.Namespace)
if err := c.ScaleToZero(cd); err != nil {
return fmt.Errorf("ScaleToZero failed: %w", err)
}
+3 -3
View File
@@ -35,10 +35,10 @@ func (c *DaemonSetController) IsCanaryReady(cd *flaggerv1.Canary) (bool, error)
return true, fmt.Errorf("daemonset %s.%s get query error: %w", targetName, cd.Namespace, err)
}
retriable, err := c.isDaemonSetReady(cd, canary)
retryable, err := c.isDaemonSetReady(cd, canary)
if err != nil {
return retriable, fmt.Errorf("canary damonset %s.%s not ready with retryablility: %v: %w",
targetName, cd.Namespace, retriable, err)
return retryable, fmt.Errorf("canary damonset %s.%s not ready with retryable %v: %w",
targetName, cd.Namespace, retryable, err)
}
return true, nil
}
+13 -14
View File
@@ -30,33 +30,31 @@ type DeploymentController struct {
// scales to zero the canary deployment and returns the pod selector label and container ports
func (c *DeploymentController) Initialize(cd *flaggerv1.Canary, skipLivenessChecks bool) (err error) {
primaryName := fmt.Sprintf("%s-primary", cd.Spec.TargetRef.Name)
err = c.createPrimaryDeployment(cd)
if err != nil {
return fmt.Errorf("createPrimaryDeployment %s.%s failed: %w", primaryName, cd.Namespace, err)
if err := c.createPrimaryDeployment(cd); err != nil {
return fmt.Errorf("createPrimaryDeployment failed: %w", err)
}
if cd.Status.Phase == "" || cd.Status.Phase == flaggerv1.CanaryPhaseInitializing {
if !skipLivenessChecks && !cd.SkipAnalysis() {
if err := c.IsPrimaryReady(cd); err != nil {
return fmt.Errorf("primary deployment %s.%s not ready: %w", primaryName, cd.Namespace, err)
return fmt.Errorf("IsPrimaryReady failed: %w", err)
}
}
c.logger.With("canary", fmt.Sprintf("%s.%s", cd.Name, cd.Namespace)).Infof("Scaling down %s.%s", cd.Spec.TargetRef.Name, cd.Namespace)
c.logger.With("canary", fmt.Sprintf("%s.%s", cd.Name, cd.Namespace)).
Infof("Scaling down Deployment %s.%s", cd.Spec.TargetRef.Name, cd.Namespace)
if err := c.ScaleToZero(cd); err != nil {
return fmt.Errorf("scaling down canary daemon set %s.%s failed: %w", cd.Spec.TargetRef.Name, cd.Namespace, err)
}
}
if cd.Spec.AutoscalerRef != nil {
switch cd.Spec.AutoscalerRef.Kind {
case "HorizontalPodAutoscaler":
if cd.Spec.AutoscalerRef.Kind == "HorizontalPodAutoscaler" {
if err := c.reconcilePrimaryHpa(cd, true); err != nil {
return fmt.Errorf(
"initial reconcilePrimaryHpa for %s.%s failed: %w", primaryName, cd.Namespace, err)
}
default:
} else {
return fmt.Errorf("cd.Spec.AutoscalerRef.Kind is invalid: %s", cd.Spec.AutoscalerRef.Kind)
}
}
@@ -70,7 +68,7 @@ func (c *DeploymentController) Promote(cd *flaggerv1.Canary) error {
canary, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(targetName, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("deployment %s.%s query error: %v", targetName, cd.Namespace, err)
return fmt.Errorf("deployment %s.%s get query error: %w", targetName, cd.Namespace, err)
}
label, err := c.getSelectorLabel(canary)
@@ -80,7 +78,7 @@ func (c *DeploymentController) Promote(cd *flaggerv1.Canary) error {
primary, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(primaryName, metav1.GetOptions{})
if err != nil {
return fmt.Errorf("deployment %s.%s query error: %v", primaryName, cd.Namespace, err)
return fmt.Errorf("deployment %s.%s get query error: %w", primaryName, cd.Namespace, err)
}
// promote secrets and config maps
@@ -137,7 +135,7 @@ func (c *DeploymentController) HasTargetChanged(cd *flaggerv1.Canary) (bool, err
targetName := cd.Spec.TargetRef.Name
canary, err := c.kubeClient.AppsV1().Deployments(cd.Namespace).Get(targetName, metav1.GetOptions{})
if err != nil {
return false, fmt.Errorf("deployment %s.%s query error: %w", targetName, cd.Namespace, err)
return false, fmt.Errorf("deployment %s.%s get query error: %w", targetName, cd.Namespace, err)
}
return hasSpecChanged(cd, canary.Spec.Template)
@@ -280,7 +278,8 @@ func (c *DeploymentController) createPrimaryDeployment(cd *flaggerv1.Canary) err
return fmt.Errorf("creating deployment %s.%s failed: %w", primaryDep.Name, cd.Namespace, err)
}
c.logger.With("canary", fmt.Sprintf("%s.%s", cd.Name, cd.Namespace)).Infof("Deployment %s.%s created", primaryDep.GetName(), cd.Namespace)
c.logger.With("canary", fmt.Sprintf("%s.%s", cd.Name, cd.Namespace)).
Infof("Deployment %s.%s created", primaryDep.GetName(), cd.Namespace)
}
return nil
@@ -335,7 +334,7 @@ func (c *DeploymentController) reconcilePrimaryHpa(cd *flaggerv1.Canary, init bo
"HorizontalPodAutoscaler %s.%s created", primaryHpa.GetName(), cd.Namespace)
return nil
} else if err != nil {
return fmt.Errorf("HorizontalPodAutoscaler %s.%s exists but get query failed: %w",
return fmt.Errorf("HorizontalPodAutoscaler %s.%s get query failed: %w",
primaryHpa.Name, primaryHpa.Namespace, err)
}
+4 -4
View File
@@ -42,11 +42,11 @@ func (c *DeploymentController) IsCanaryReady(cd *flaggerv1.Canary) (bool, error)
return true, fmt.Errorf("deployment %s.%s get query error: %w", targetName, cd.Namespace, err)
}
retriable, err := c.isDeploymentReady(canary, cd.GetProgressDeadlineSeconds())
retryable, err := c.isDeploymentReady(canary, cd.GetProgressDeadlineSeconds())
if err != nil {
return retriable, fmt.Errorf(
"canary deployment %s.%s not ready with retriablility %v: %w",
targetName, cd.Namespace, retriable, err,
return retryable, fmt.Errorf(
"canary deployment %s.%s not ready with retryable %v: %w",
targetName, cd.Namespace, retryable, err,
)
}
return true, nil
+1 -2
View File
@@ -247,8 +247,7 @@ func updateStatusWithUpgrade(flaggerClient clientset.Interface, cd *flaggerv1.Ca
_, err := flaggerClient.FlaggerV1beta1().Canaries(cd.Namespace).UpdateStatus(cd)
if err != nil && strings.Contains(err.Error(), "flagger.app/v1alpha") {
// upgrade alpha resource
_, updateErr := flaggerClient.FlaggerV1beta1().Canaries(cd.Namespace).Update(cd)
if updateErr != nil {
if _, updateErr := flaggerClient.FlaggerV1beta1().Canaries(cd.Namespace).Update(cd); updateErr != nil {
return fmt.Errorf("updating canary %s.%s from v1alpha to v1beta failed: %w", cd.Name, cd.Namespace, updateErr)
}
// retry status update