Merge pull request #10489 from chrisroberts/f-lots-o-smb

Only prepare 10 shares per command to prevent exceeding allowed command size
This commit is contained in:
Chris Roberts 2018-12-07 16:29:56 -08:00 committed by GitHub
commit 598d4254be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 9 deletions

View File

@ -100,15 +100,21 @@ module VagrantPlugins
]
end
if !shares.empty?
machine.env.ui.warn("\n" + I18n.t("vagrant_sf_smb.uac.create_warning") + "\n")
sleep(UAC_PROMPT_WAIT)
result = Vagrant::Util::PowerShell.execute(script_path, *shares, sudo: true)
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
uac_notified = false
shares.each_slice(10) do |s_shares|
if !uac_notified
machine.env.ui.warn("\n" + I18n.t("vagrant_sf_smb.uac.create_warning") + "\n")
uac_notified = true
sleep(UAC_PROMPT_WAIT)
end
result = Vagrant::Util::PowerShell.execute(script_path, *s_shares, sudo: true)
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

View File

@ -228,6 +228,18 @@ Remark Not Vagrant Owned
expect(machine.env.ui).not_to receive(:warn)
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
describe ".get_smbshares" do