Преглед изворни кода

get api version updates to work properly

Alexander Belanger пре 4 година
родитељ
комит
55fe5dc864
2 измењених фајлова са 15 додато и 16 уклоњено
  1. 11 14
      internal/helm/agent.go
  2. 4 2
      internal/helm/postrenderer.go

+ 11 - 14
internal/helm/agent.go

@@ -266,7 +266,7 @@ func (a *Agent) UpgradeReleaseByValues(
 			secretList, err := a.K8sAgent.Clientset.CoreV1().Secrets(rel.Namespace).List(
 				context.Background(),
 				v1.ListOptions{
-					LabelSelector: fmt.Sprintf("owner=helm,status in (pending-install, pending-upgrade, pending-rollback),name=%s", rel.Name),
+					LabelSelector: fmt.Sprintf("owner=helm,name=%s", rel.Name),
 				},
 			)
 
@@ -286,29 +286,26 @@ func (a *Agent) UpgradeReleaseByValues(
 					}
 				}
 
-				prevRelease, err := a.GetRelease(conf.Name, 0, true)
-
-				if err != nil {
-					return nil, err
-				}
-
 				// run the equivalent of `helm template` to get the manifest string for the new release
 				installCmd := action.NewInstall(a.ActionConfig)
 
 				installCmd.ReleaseName = conf.Name
+				installCmd.Namespace = rel.Namespace
 				installCmd.DryRun = true
 				installCmd.Replace = true
 
-				installCmd.ClientOnly = true
+				installCmd.ClientOnly = false
 				installCmd.IncludeCRDs = true
 
-				newRelDryRun, err := cmd.Run(conf.Name, ch, conf.Values)
+				newRelDryRun, err := installCmd.Run(ch, conf.Values)
 
 				if err != nil {
 					return nil, err
 				}
 
-				oldManifestBuffer := bytes.NewBufferString(prevRelease.Manifest)
+				a.ActionConfig.Log("helm template ran successfully")
+
+				oldManifestBuffer := bytes.NewBufferString(rel.Manifest)
 				newManifestBuffer := bytes.NewBufferString(newRelDryRun.Manifest)
 
 				versionMapper := &DeprecatedAPIVersionMapper{}
@@ -319,17 +316,17 @@ func (a *Agent) UpgradeReleaseByValues(
 					return nil, err
 				}
 
-				prevRelease.Manifest = updatedManifestBuffer.String()
+				rel.Manifest = updatedManifestBuffer.String()
 
 				helmSecrets := driver.NewSecrets(a.K8sAgent.Clientset.CoreV1().Secrets(rel.Namespace))
 
-				err = helmSecrets.Update(mostRecentSecret.GetName(), prevRelease)
+				err = helmSecrets.Update(mostRecentSecret.GetName(), rel)
 
 				if err != nil {
 					return nil, fmt.Errorf("Upgrade failed: %w", err)
 				}
-				// retry upgrade
-				res, err = cmd.Run(conf.Name, ch, conf.Values)
+
+				res, err := cmd.Run(conf.Name, ch, conf.Values)
 
 				if err != nil {
 					return nil, fmt.Errorf("Upgrade failed: %w", err)

+ 4 - 2
internal/helm/postrenderer.go

@@ -931,7 +931,7 @@ func getResourceName(res resource) (string, bool) {
 		return "", false
 	}
 
-	metadata, ok := metadataVal.(map[string]interface{})
+	metadata, ok := metadataVal.(resource)
 
 	if !ok {
 		return "", false
@@ -943,7 +943,9 @@ func getResourceName(res resource) (string, bool) {
 		return "", false
 	}
 
-	return nameVal.(string), true
+	name, ok := nameVal.(string)
+
+	return name, ok
 }
 
 func getKindAndAPIVersion(res resource) (kind string, apiVersion string, ok bool) {