Correct helm override value setting, when the setting value is a digit

As helm converts a long int value to float64, which makes error when
helm sets value with a big number. Update helm-override-update
underlying logic to map the command line --set option to helm
--set-string option for long integer values case, which can be
handled correctly

Test case:
$ system application-upload <openstack application tarball>
$ system helm-override-update \
  --set conf.panko.database.metering_time_to_live=
  stx-openstack panko openstack
$ system helm-override-update \
  --set =32
  stx-openstack panko openstack
$ system helm-override-update \
  --set conf.panko.database.event_time_to_live=24828899 \
  --set conf.panko.database.metering_time_to_live=
  stx-openstack panko openstack
$ system application-apply stx-openstack

Closes-Bug: 1828056

Change-Id: I44d7d5b515c5dbf121e12855dff7abfa49beb07c
Signed-off-by: Martin, Chen <haochuan.z.chen@intel.com>
(cherry picked from commit 71db99e824)
This commit is contained in:
Martin, Chen 2019-07-18 05:54:25 +08:00 committed by chen haochuan
parent ea97a763ea
commit 8009752d4e
1 changed files with 10 additions and 1 deletions

View File

@ -404,7 +404,16 @@ class HelmOperator(object):
cmd.extend(['--values', tmpfile.name])
for value_set in set_overrides:
cmd.extend(['--set', value_set])
keypair = list(value_set.split("="))
# request user to input with "--set key=value" or
# "--set key=", for the second case, the value is assume ""
# skip setting like "--set =value", "--set xxxx"
if len(keypair) == 2 and keypair[0]:
if keypair[1] and keypair[1].isdigit():
cmd.extend(['--set-string', value_set])
else:
cmd.extend(['--set', value_set])
env = os.environ.copy()
env['KUBECONFIG'] = '/etc/kubernetes/admin.conf'