1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-23 22:50:09 +03:00

feature #1307: Add shell option to one_vmm_exec

for ESX 5+ which only provides sh
This commit is contained in:
Tino Vazquez 2012-06-15 15:23:03 +02:00
parent e663034a92
commit 25beab57af
2 changed files with 24 additions and 9 deletions

View File

@ -34,8 +34,9 @@ class SshStream
#
#
#
def initialize(host)
@host = host
def initialize(host, shell="bash")
@host = host
@shell = shell
end
def opened?
@ -47,7 +48,7 @@ class SshStream
end
def open
@stdin, @stdout, @stderr=Open3::popen3("#{SSH_CMD} #{@host} bash -s ; echo #{SSH_RC_STR} $? 1>&2")
@stdin, @stdout, @stderr=Open3::popen3("#{SSH_CMD} #{@host} #{@shell} -s ; echo #{SSH_RC_STR} $? 1>&2")
@stream_out = ""
@stream_err = ""
@ -155,11 +156,11 @@ end
class SshStreamCommand < RemotesCommand
def initialize(host, remote_dir, logger=nil, stdin=nil)
def initialize(host, remote_dir, logger=nil, stdin=nil, shell='bash')
super('true', host, logger, stdin)
@remote_dir = remote_dir
@stream = SshStream.new(host)
@stream = SshStream.new(host, shell)
@stream.open
end
@ -239,4 +240,4 @@ if $0 == __FILE__
lambda { |e| STDOUT.puts "error: #{e}" },
nil)
cssh.run('whoami')
end
end

View File

@ -150,6 +150,9 @@ class VmmAction
ssh = @ssh_src
end
puts get_parameters(step[:parameters]).inspect
puts ssh.inspect
result, info = @vmm.do_action(get_parameters(step[:parameters]),
@id,
host,
@ -241,6 +244,12 @@ class ExecDriver < VirtualMachineDriver
:threaded => true
}.merge!(options)
if options[:shell]
@shell=options[:shell]
else
@shell='bash'
end
super("vmm/#{hypervisor}", @options)
@hypervisor = hypervisor
@ -256,7 +265,7 @@ class ExecDriver < VirtualMachineDriver
if not action_is_local?(aname)
stream = SshStreamCommand.new(host,
@remote_scripts_base_path,
log_method(id))
log_method(id), nil, @shell)
else
return nil
end
@ -565,12 +574,14 @@ end
opts = GetoptLong.new(
[ '--retries', '-r', GetoptLong::OPTIONAL_ARGUMENT ],
[ '--threads', '-t', GetoptLong::OPTIONAL_ARGUMENT ],
[ '--local', '-l', GetoptLong::REQUIRED_ARGUMENT ]
[ '--local', '-l', GetoptLong::REQUIRED_ARGUMENT ],
[ '--shell', '-s', GetoptLong::REQUIRED_ARGUMENT ]
)
hypervisor = ''
retries = 0
threads = 15
shell = 'bash'
local_actions = {}
begin
@ -582,6 +593,8 @@ begin
threads = arg.to_i
when '--local'
local_actions=OpenNebulaDriver.parse_actions_list(arg)
when '--shell'
shell = arg
end
end
rescue Exception => e
@ -597,6 +610,7 @@ end
exec_driver = ExecDriver.new(hypervisor,
:concurrency => threads,
:retries => retries,
:local_actions => local_actions)
:local_actions => local_actions,
:shell => shell)
exec_driver.start_driver