Ver Fonte

Revert "upgrade release should take in map of values and not string"

This reverts commit a4c786595b0335da0c40619d9d33fde95910bc7d.
Mohammed Nafees há 3 anos atrás
pai
commit
bd23086f52

+ 2 - 2
api/types/release.go

@@ -66,8 +66,8 @@ type RollbackReleaseRequest struct {
 
 // swagger:model UpdateReleaseRequest
 type UpgradeReleaseRequest struct {
-	Values       map[string]interface{} `json:"values" form:"required"`
-	ChartVersion string                 `json:"version"`
+	Values       string `json:"values" form:"required"`
+	ChartVersion string `json:"version"`
 }
 
 type UpdateImageBatchRequest struct {

+ 2 - 1
dashboard/src/main/home/cluster-dashboard/expanded-chart/BuildSettingsTab.tsx

@@ -100,11 +100,12 @@ const BuildSettingsTab: React.FC<Props> = ({ chart, isPreviousVersion }) => {
     }
 
     values.container.env.build = { ...envs };
+    const valuesYaml = yaml.dump({ ...values });
     try {
       await api.upgradeChartValues(
         "<token>",
         {
-          values: values,
+          values: valuesYaml,
         },
         {
           id: currentProject.id,

+ 15 - 6
dashboard/src/main/home/cluster-dashboard/expanded-chart/ExpandedChart.tsx

@@ -236,6 +236,10 @@ const ExpandedChart: React.FC<Props> = (props) => {
       _.set(values, key, rawValues[key]);
     }
 
+    let valuesYaml = yaml.dump({
+      ...values,
+    });
+
     const syncedEnvGroups = props?.metadata
       ? props?.metadata["container.env"]
       : {};
@@ -295,11 +299,12 @@ const ExpandedChart: React.FC<Props> = (props) => {
 
     setSaveValueStatus("loading");
 
+    // console.log("valuesYaml", valuesYaml);
     try {
       await api.upgradeChartValues(
         "<token>",
         {
-          values: values,
+          values: valuesYaml,
         },
         {
           id: currentProject.id,
@@ -316,7 +321,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
 
       window.analytics?.track("Chart Upgraded", {
         chart: currentChart.name,
-        values: values,
+        values: valuesYaml,
       });
     } catch (err) {
       const parsedErr = err?.response?.data?.error;
@@ -331,7 +336,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
 
       window.analytics?.track("Failed to Upgrade Chart", {
         chart: currentChart.name,
-        values: values,
+        values: valuesYaml,
         error: err,
       });
 
@@ -344,6 +349,10 @@ const ExpandedChart: React.FC<Props> = (props) => {
       // convert current values to yaml
       let values = currentChart.config;
 
+      let valuesYaml = yaml.dump({
+        ...values,
+      });
+
       setSaveValueStatus("loading");
       getChartData(currentChart);
 
@@ -351,7 +360,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
         await api.upgradeChartValues(
           "<token>",
           {
-            values: values,
+            values: valuesYaml,
             version: version,
           },
           {
@@ -366,7 +375,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
 
         window.analytics?.track("Chart Upgraded", {
           chart: currentChart.name,
-          values: values,
+          values: valuesYaml,
         });
 
         cb && cb();
@@ -382,7 +391,7 @@ const ExpandedChart: React.FC<Props> = (props) => {
 
         window.analytics?.track("Failed to Upgrade Chart", {
           chart: currentChart.name,
-          values: values,
+          values: valuesYaml,
           error: err,
         });
       }

+ 10 - 4
dashboard/src/main/home/cluster-dashboard/expanded-chart/SettingsSection.tsx

@@ -108,14 +108,20 @@ const SettingsSection: React.FC<PropsType> = ({
       _.set(values, "paused", true);
     }
 
+    // Weave in preexisting values and convert to yaml
+    let conf = yaml.dump(
+      {
+        ...(currentChart?.config as Object),
+        ...values,
+      },
+      { forceQuotes: true }
+    );
+
     try {
       await api.upgradeChartValues(
         "<token>",
         {
-          values: {
-            ...(currentChart?.config as Object),
-            ...values,
-          },
+          values: conf,
         },
         {
           id: currentProject.id,

+ 5 - 3
dashboard/src/main/home/cluster-dashboard/expanded-chart/ValuesYaml.tsx

@@ -50,18 +50,20 @@ export default class ValuesYaml extends Component<PropsType, StateType> {
     let { currentCluster, setCurrentError, currentProject } = this.context;
     this.setState({ saveValuesStatus: "loading" });
 
-    let values = yaml.load(this.state.values);
+    let valuesString = this.state.values;
 
     // if this is a job, set it to paused
     if (this.props.currentChart?.chart?.metadata?.name == "job") {
-      _.set(values, "paused", true);
+      const valuesYAML = yaml.load(this.state.values);
+      _.set(valuesYAML, "paused", true);
+      valuesString = yaml.dump(valuesYAML);
     }
 
     api
       .upgradeChartValues(
         "<token>",
         {
-          values: values,
+          values: valuesString,
         },
         {
           id: currentProject.id,

+ 1 - 1
dashboard/src/shared/api.tsx

@@ -1259,7 +1259,7 @@ const updateUser = baseApi<
 
 const upgradeChartValues = baseApi<
   {
-    values: any;
+    values: string;
     version?: string;
   },
   {

+ 8 - 2
internal/helm/agent.go

@@ -159,10 +159,16 @@ type UpgradeReleaseConfig struct {
 // UpgradeRelease upgrades a specific release with new values.yaml
 func (a *Agent) UpgradeRelease(
 	conf *UpgradeReleaseConfig,
-	values map[string]interface{},
+	values string,
 	doAuth *oauth2.Config,
 ) (*release.Release, error) {
-	conf.Values = values
+	valuesYaml, err := chartutil.ReadValues([]byte(values))
+
+	if err != nil {
+		return nil, fmt.Errorf("Values could not be parsed: %v", err)
+	}
+
+	conf.Values = valuesYaml
 
 	return a.UpgradeReleaseByValues(conf, doAuth)
 }