Only prepare 10 shares per command to prevent exceeding allowed command size
When a large number of shares are defined it may cause the generated command to exceed the maximum allowed length. To prevent this, only allow 10 shares to be processed at a time. Fixes #10483
This commit is contained in:
parent
f7757b58d9
commit
924fb97e8c
|
@ -100,15 +100,21 @@ module VagrantPlugins
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
if !shares.empty?
|
if !shares.empty?
|
||||||
machine.env.ui.warn("\n" + I18n.t("vagrant_sf_smb.uac.create_warning") + "\n")
|
uac_notified = false
|
||||||
sleep(UAC_PROMPT_WAIT)
|
shares.each_slice(10) do |s_shares|
|
||||||
result = Vagrant::Util::PowerShell.execute(script_path, *shares, sudo: true)
|
if !uac_notified
|
||||||
if result.exit_code != 0
|
machine.env.ui.warn("\n" + I18n.t("vagrant_sf_smb.uac.create_warning") + "\n")
|
||||||
share_path = result.stdout.to_s.sub("share path: ", "")
|
uac_notified = true
|
||||||
raise SyncedFolderSMB::Errors::DefineShareFailed,
|
sleep(UAC_PROMPT_WAIT)
|
||||||
host: share_path,
|
end
|
||||||
stderr: result.stderr,
|
result = Vagrant::Util::PowerShell.execute(script_path, *s_shares, sudo: true)
|
||||||
stdout: result.stdout
|
if result.exit_code != 0
|
||||||
|
share_path = result.stdout.to_s.sub("share path: ", "")
|
||||||
|
raise SyncedFolderSMB::Errors::DefineShareFailed,
|
||||||
|
host: share_path,
|
||||||
|
stderr: result.stderr,
|
||||||
|
stdout: result.stdout
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -228,6 +228,18 @@ Remark Not Vagrant Owned
|
||||||
expect(machine.env.ui).not_to receive(:warn)
|
expect(machine.env.ui).not_to receive(:warn)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when more than 10 shares are defined" do
|
||||||
|
let(:folders) {
|
||||||
|
Hash[12.times.map{|i| ["/path#{i}", {hostpath: "/host#{i}"}]}]
|
||||||
|
}
|
||||||
|
|
||||||
|
after{ subject.smb_prepare(env, machine, folders, options) }
|
||||||
|
|
||||||
|
it "should execute multiple powershell commands" do
|
||||||
|
expect(Vagrant::Util::PowerShell).to receive(:execute).twice.with(any_args, sudo: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe ".get_smbshares" do
|
describe ".get_smbshares" do
|
||||||
|
|
Loading…
Reference in New Issue