blob: f6d7088cdaa5a79f273bd966a8b5766315aec443 [file] [log] [blame]
import logging
from salt.serializers import yaml
HELM_HOME = '/srv/helm/home'
LOG = logging.getLogger(__name__)
def _helm_cmd(*args):
return {
'cmd': ('helm',) + args,
'env': {'HELM_HOME': HELM_HOME},
}
def release_exists(name, namespace):
cmd = _helm_cmd('list', '--short', '--all', '--namespace', namespace, name)
return __salt__['cmd.run_stdout'](**cmd) == name
def release_create(name, namespace, chart_name, version=None, values=None):
args = []
if version is not None:
args += ['--version', version]
if values is not None:
args += ['--values', '/dev/stdin']
cmd = _helm_cmd('install', '--namespace', namespace,
'--name', name, chart_name, *args)
if values is not None:
cmd['stdin'] = yaml.serialize(values, default_flow_style=False)
LOG.debug('Creating release with args: %s', cmd)
return __salt__['cmd.retcode'](**cmd) == 0
def release_delete(name):
cmd = _helm_cmd('delete', '--purge', name)
return __salt__['cmd.retcode'](**cmd) == 0
def release_upgrade(name, namespace, chart_name, version=None, values=None):
args = []
if version is not None:
args += ['--version', version]
if values is not None:
args += ['--values', '/dev/stdin']
cmd = _helm_cmd('upgrade', '--namespace', namespace,
name, chart_name, *args)
if values is not None:
cmd['stdin'] = yaml.serialize(values, default_flow_style=False)
LOG.debug('Upgrading release with args: %s', cmd)
return __salt__['cmd.retcode'](**cmd) == 0
def get_values(name):
cmd = _helm_cmd('get', 'values', '--all', name)
return yaml.deserialize(__salt__['cmd.run_stdout'](**cmd))