Merge branch '2014.7' into develop

Conflicts:
	salt/states/file.py
This commit is contained in:
Thomas S Hatch 2014-11-25 09:29:58 -07:00
commit b83ab14c01
4 changed files with 36 additions and 16 deletions

View File

@ -10,6 +10,11 @@ from __future__ import absolute_import
import os
import re
import logging
try:
from shlex import quote as _cmd_quote # pylint: disable=E0611
except ImportError:
from pipes import quote as _cmd_quote
from shlex import split as _cmd_split
# Set up logger
log = logging.getLogger(__name__)
@ -31,15 +36,21 @@ def _rbenv_exec(command, args='', env=None, runas=None, ret=None):
binary = _rbenv_bin(runas)
path = _rbenv_path(runas)
if env:
env = ' {0}'.format(env)
env = env or ''
environ = {}
for token in _cmd_split(env):
try:
var, val = token.split('=')
environ[var] = val
except Exception:
pass # if token != var=val, it's not a proper env anyway
environ['RBENV_ROOT'] = path
binary = 'env RBENV_ROOT={0}{1} {2}'.format(path, env, binary)
args = ' '.join([_cmd_quote(arg) for arg in _cmd_split(args)])
result = __salt__['cmd.run_all'](
'{0} {1} {2}'.format(binary, command, args),
runas=runas
'{0} {1} {2}'.format(binary, _cmd_quote(command), args),
runas=runas,
env=environ
)
if isinstance(ret, dict):
@ -62,7 +73,8 @@ def _rbenv_path(runas=None):
if runas in (None, 'root'):
path = __salt__['config.option']('rbenv.root') or '/usr/local/rbenv'
else:
path = __salt__['config.option']('rbenv.root') or '~{0}/.rbenv'.format(runas)
path = _cmd_quote(__salt__['config.option']('rbenv.root')
or '~{0}/.rbenv'.format(runas))
return os.path.expanduser(path)
@ -72,7 +84,8 @@ def _install_rbenv(path, runas=None):
return True
return 0 == __salt__['cmd.retcode'](
'git clone https://github.com/sstephenson/rbenv.git {0}'.format(path), runas=runas)
'git clone https://github.com/sstephenson/rbenv.git {0}'
.format(_cmd_quote(path)), runas=runas)
def _install_ruby_build(path, runas=None):
@ -81,7 +94,8 @@ def _install_ruby_build(path, runas=None):
return True
return 0 == __salt__['cmd.retcode'](
'git clone https://github.com/sstephenson/ruby-build.git {0}'.format(path), runas=runas)
'git clone https://github.com/sstephenson/ruby-build.git {0}'
.format(_cmd_quote(path)), runas=runas)
def _update_rbenv(path, runas=None):
@ -89,7 +103,7 @@ def _update_rbenv(path, runas=None):
return False
return 0 == __salt__['cmd.retcode'](
'cd {0} && git pull'.format(path), runas=runas)
'git pull', runas=runas, cwd=path)
def _update_ruby_build(path, runas=None):
@ -98,7 +112,7 @@ def _update_ruby_build(path, runas=None):
return False
return 0 == __salt__['cmd.retcode'](
'cd {0} && git pull'.format(path), runas=runas)
'git pull', runas=runas, cwd=path)
def install(runas=None, path=None):
@ -299,9 +313,12 @@ def do(cmdline=None, runas=None):
salt '*' rbenv.do 'gem list bundler' deploy
'''
path = _rbenv_path(runas)
environ = {'PATH': '{0}/shims:{1}'.format(path, os.environ['PATH'])}
cmdline = ' '.join([_cmd_quote(cmd) for cmd in _cmd_split(cmdline)])
result = __salt__['cmd.run_all'](
'env PATH={0}/shims:$PATH {1}'.format(path, cmdline),
runas=runas
cmdline,
runas=runas,
env=environ
)
if result['retcode'] == 0:

View File

@ -15,7 +15,7 @@ import logging
from salt.ext.six import string_types
# Import Salt libs
from salt.utils.odict import _OrderedDict
from salt.utils.odict import OrderedDict as _OrderedDict
import salt.client
import salt.utils.virt
import salt.utils.cloud

View File

@ -1235,6 +1235,9 @@ def managed(name,
run.
'''
name = os.path.expanduser(name)
# contents must be a string
if contents:
contents = str(contents)
# Make sure that leading zeros stripped by YAML loader are added back
mode = __salt__['config.manage_mode'](mode)

View File

@ -117,7 +117,7 @@ def delete_vm(options):
proc.communicate()
def echo_parseable_environment(options):
def echo_parseable_environment(options, parser):
'''
Echo NAME=VAL parseable output
'''
@ -959,7 +959,7 @@ def parse():
parser.exit('--provider or --pull-request is required')
if options.echo_parseable_environment:
echo_parseable_environment(options)
echo_parseable_environment(options, parser)
parser.exit(0)
if not options.test_git_commit and not options.pull_request: