Przeglądaj źródła

upgrade release should take in map of values and not string

Mohammed Nafees 3 lat temu
rodzic
commit
a4c786595b

+ 2 - 2
api/types/release.go

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

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

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

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

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

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

@@ -108,20 +108,14 @@ 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: conf,
+          values: {
+            ...(currentChart?.config as Object),
+            ...values,
+          },
         },
         {
           id: currentProject.id,

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

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

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

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

+ 2 - 8
internal/helm/agent.go

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