vagrant-unbundled 2.2.4.0 → 2.2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +44 -0
- data/Gemfile.lock +10 -10
- data/LICENSE +1 -1
- data/README.md +10 -0
- data/RELEASE.md +11 -25
- data/contrib/bash/completion.sh +1 -1
- data/lib/vagrant/action/builtin/mixin_synced_folders.rb +7 -1
- data/lib/vagrant/action/general/package.rb +18 -0
- data/lib/vagrant/action/runner.rb +1 -1
- data/lib/vagrant/action/warden.rb +1 -1
- data/lib/vagrant/batch_action.rb +14 -0
- data/lib/vagrant/box_collection.rb +1 -1
- data/lib/vagrant/bundler.rb +29 -8
- data/lib/vagrant/cli.rb +1 -1
- data/lib/vagrant/environment.rb +50 -5
- data/lib/vagrant/machine.rb +4 -1
- data/lib/vagrant/plugin/v2/trigger.rb +12 -3
- data/lib/vagrant/shared_helpers.rb +8 -0
- data/lib/vagrant/util/guest_inspection.rb +19 -0
- data/lib/vagrant/vagrantfile.rb +18 -14
- data/plugins/commands/box/command/update.rb +8 -2
- data/plugins/commands/cloud/box/create.rb +1 -1
- data/plugins/commands/cloud/box/delete.rb +1 -1
- data/plugins/commands/cloud/provider/create.rb +1 -1
- data/plugins/commands/cloud/provider/delete.rb +1 -1
- data/plugins/commands/cloud/provider/update.rb +1 -1
- data/plugins/commands/cloud/provider/upload.rb +1 -1
- data/plugins/commands/cloud/publish.rb +1 -1
- data/plugins/commands/cloud/search.rb +1 -1
- data/plugins/commands/cloud/version/create.rb +1 -1
- data/plugins/commands/cloud/version/delete.rb +1 -1
- data/plugins/commands/cloud/version/release.rb +1 -1
- data/plugins/commands/cloud/version/revoke.rb +1 -1
- data/plugins/commands/cloud/version/update.rb +1 -1
- data/plugins/commands/global-status/command.rb +11 -0
- data/plugins/commands/snapshot/command/list.rb +2 -1
- data/plugins/commands/snapshot/command/pop.rb +3 -1
- data/plugins/communicators/ssh/communicator.rb +0 -1
- data/plugins/guests/bsd/cap/{virtualbox.rb → mount_virtualbox_shared_folder.rb} +1 -1
- data/plugins/guests/bsd/plugin.rb +2 -2
- data/plugins/guests/coreos/cap/change_host_name.rb +24 -7
- data/plugins/guests/coreos/cap/configure_networks.rb +48 -64
- data/plugins/guests/freebsd/cap/configure_networks.rb +2 -2
- data/plugins/guests/freebsd/cap/mount_virtualbox_shared_folder.rb +76 -0
- data/plugins/guests/freebsd/plugin.rb +10 -0
- data/plugins/hosts/bsd/cap/nfs.rb +1 -1
- data/plugins/hosts/freebsd/cap/nfs.rb +1 -1
- data/plugins/hosts/void/cap/nfs.rb +1 -1
- data/plugins/kernel_v2/config/vm_trigger.rb +1 -1
- data/plugins/providers/docker/action/connect_networks.rb +77 -0
- data/plugins/providers/docker/action/destroy_network.rb +50 -0
- data/plugins/providers/docker/action/prepare_networks.rb +355 -0
- data/plugins/providers/docker/action.rb +9 -3
- data/plugins/providers/docker/driver/compose.rb +13 -1
- data/plugins/providers/docker/driver.rb +148 -4
- data/plugins/providers/docker/errors.rb +28 -0
- data/plugins/providers/docker/provider.rb +8 -0
- data/plugins/providers/virtualbox/cap.rb +1 -0
- data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +5 -5
- data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +5 -5
- data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +15 -2
- data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +5 -5
- data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +2 -2
- data/plugins/provisioners/ansible/config/guest.rb +3 -0
- data/plugins/provisioners/ansible/provisioner/guest.rb +5 -2
- data/plugins/provisioners/chef/cap/freebsd/chef_installed.rb +1 -1
- data/plugins/provisioners/chef/cap/linux/chef_installed.rb +1 -1
- data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +1 -1
- data/plugins/provisioners/chef/cap/windows/chef_installed.rb +2 -2
- data/plugins/provisioners/chef/provisioner/base.rb +1 -1
- data/plugins/synced_folders/rsync/command/rsync_auto.rb +5 -1
- data/plugins/synced_folders/rsync/default_unix_cap.rb +1 -1
- data/plugins/synced_folders/rsync/helper.rb +8 -7
- data/plugins/synced_folders/smb/synced_folder.rb +21 -0
- data/templates/locales/en.yml +8 -4
- data/templates/locales/providers_docker.yml +70 -0
- data/templates/nfs/{exports_freebsd.erb → exports_bsd.erb} +0 -0
- data/vendor/bundle/ruby/2.6.0/bundler/gems/vagrant-spec-abfc34474d12/vagrant-spec.gemspec +3 -3
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/bcrypt_pbkdf-1.0.1/bcrypt_pbkdf_ext.so +0 -0
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/bcrypt_pbkdf-1.0.1/gem.build_complete +0 -0
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/bcrypt_pbkdf-1.0.1/gem_make.out +19 -0
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/unf_ext-0.0.7.6/gem.build_complete +0 -0
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/unf_ext-0.0.7.6/gem_make.out +16 -0
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/unf_ext-0.0.7.6/mkmf.log +35 -0
- data/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/unf_ext-0.0.7.6/unf_ext.so +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/.travis.yml +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/CHANGELOG.md +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/COPYING +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/Gemfile +2 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/Gemfile.lock +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/README.md +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/Rakefile +56 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/bcrypt_pbkdf.gemspec +29 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/.sitearchdir.time +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/Makefile +265 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/bcrypt_pbkdf.c +169 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/bcrypt_pbkdf.o +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/bcrypt_pbkdf_ext.c +44 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/bcrypt_pbkdf_ext.o +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/bcrypt_pbkdf_ext.so +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/blf.h +90 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/blowfish.c +698 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/blowfish.o +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/crypto_api.h +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/crypto_hash_sha512.h +19 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/explicit_bzero.c +20 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/explicit_bzero.o +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/extconf.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/hash_sha512.c +320 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/hash_sha512.o +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/includes.h +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/sha2.h +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/util.h +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/ext/mri/utils.h +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/lib/bcrypt_pbkdf.rb +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/lib/bcrypt_pbkdf_ext.so +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/test/bcrypt_pnkdf/engine_test.rb +76 -0
- data/vendor/bundle/ruby/2.6.0/gems/bcrypt_pbkdf-1.0.1/test/test_helper.rb +2 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/.document +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/.gitignore +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/.travis.yml +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/CHANGELOG.md +219 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/Gemfile +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/LICENSE.txt +78 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/README.md +67 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/Rakefile +111 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/data/public_suffix_list.dat +12985 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/domain_name.gemspec +36 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/lib/domain_name/etld_data.rb +8787 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/lib/domain_name/etld_data.rb.erb +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/lib/domain_name/punycode.rb +283 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/lib/domain_name/version.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/lib/domain_name.rb +297 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/test/helper.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/test/test_domain_name-punycode.rb +97 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/test/test_domain_name.rb +317 -0
- data/vendor/bundle/ruby/2.6.0/gems/domain_name-0.5.20190701/tool/gen_etld_data.rb +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/.gitignore +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/COPYING +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/Changelog.md +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/Gemfile +2 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/README.md +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/Rakefile +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/VERSION +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/examples/gss_client.rb +26 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/examples/gss_iov_client.rb +55 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/examples/gss_iov_helpers.rb +74 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/examples/gss_iov_server.rb +67 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/examples/gss_server.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/gssapi.gemspec +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi/exceptions.rb +50 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi/extensions.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi/heimdal.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi/lib_gssapi.rb +414 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi/lib_gssapi_loader.rb +80 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi/simple.rb +269 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/lib/gssapi.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/preamble +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/test/spec/gssapi_simple_spec.rb +70 -0
- data/vendor/bundle/ruby/2.6.0/gems/gssapi-1.3.0/test/spec/test_buffer_spec.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/Code-of-Conduct.md +73 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/Contributing.md +141 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/History.md +223 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/Licence.md +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/Manifest.txt +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/README.rdoc +200 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/Rakefile +284 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/type/columnar.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/type.rb +587 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/_columnar.rb +136 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/cache.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/columnar.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/container.rb +96 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/deprecations.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/full.rb +19 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/loader.rb +146 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/logger.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types/registry.rb +90 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime/types.rb +231 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/lib/mime-types.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/bad-fixtures/malformed +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/fixture/json.json +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/fixture/old-data +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/fixture/yaml.yaml +55 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/minitest_helper.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/test_mime_type.rb +610 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/test_mime_types.rb +169 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/test_mime_types_cache.rb +118 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/test_mime_types_class.rb +159 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/test_mime_types_lazy.rb +49 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-3.3/test/test_mime_types_loader.rb +32 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/Code-of-Conduct.md +75 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/Contributing.md +161 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/History.md +396 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/Licence.md +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/Manifest.txt +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/README.md +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/Rakefile +94 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime-types.json +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.content_type.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.docs.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.encoding.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.flags.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.friendly.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.pext.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.use_instead.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/data/mime.xrefs.column +2212 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/lib/mime/types/data.rb +21 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/lib/mime-types-data.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/application.yaml +16342 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/audio.yaml +1644 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/chemical.yaml +71 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/conference.yaml +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/drawing.yaml +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/font.yaml +65 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/image.yaml +1069 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/message.yaml +200 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/model.yaml +302 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/multipart.yaml +179 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/text.yaml +1046 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/video.yaml +1070 -0
- data/vendor/bundle/ruby/2.6.0/gems/mime-types-data-3.2019.0904/types/world.yaml +8 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/README.md +313 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/Rakefile +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/TODO +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/central_directory.rb +208 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/compressor.rb +9 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/constants.rb +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/crypto/encryption.rb +11 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/crypto/null_encryption.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/crypto/traditional_encryption.rb +99 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/decompressor.rb +13 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/deflater.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/dos_time.rb +48 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/entry.rb +688 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/entry_set.rb +86 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/errors.rb +17 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/generic.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/ntfs.rb +90 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/old_unix.rb +44 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/universal_time.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/unix.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/zip64.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field/zip64_placeholder.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/extra_field.rb +101 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/file.rb +436 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/filesystem.rb +627 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/inflater.rb +66 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/input_stream.rb +173 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/ioextras/abstract_input_stream.rb +111 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/ioextras/abstract_output_stream.rb +43 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/ioextras.rb +36 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/null_compressor.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/null_decompressor.rb +27 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/null_input_stream.rb +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/output_stream.rb +189 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/pass_thru_compressor.rb +23 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/pass_thru_decompressor.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/streamable_directory.rb +15 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/streamable_stream.rb +56 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip/version.rb +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/lib/zip.rb +69 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/example.rb +81 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/example_filesystem.rb +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/example_recursive.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/gtk_ruby_zip.rb +84 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/qtzip.rb +92 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/write_simple.rb +12 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/samples/zipfind.rb +66 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/basic_zip_file_test.rb +60 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/case_sensitivity_test.rb +69 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/central_directory_entry_test.rb +69 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/central_directory_test.rb +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/crypto/null_encryption_test.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/crypto/traditional_encryption_test.rb +80 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/WarnInvalidDate.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/file1.txt +46 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/file1.txt.deflatedData +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/file2.txt +1504 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/globTest/foo/bar/baz/foo.txt +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/globTest/foo.txt +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/globTest/food.txt +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/globTest.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/gpbit3stored.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/mimetype +1 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/notzippedruby.rb +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/ntfs.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/oddExtraField.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/Makefile +10 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/README.md +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/absolute1.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/absolute2.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/dirsymlink.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/dirsymlink2a.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/dirsymlink2b.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/relative0.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/relative2.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/jwilk/symlink.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/relative1.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/tilde.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/tuzovakaoff/README.md +3 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/tuzovakaoff/absolutepath.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/path_traversal/tuzovakaoff/symlink.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/rubycode.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/rubycode2.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/test.xls +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/testDirectory.bin +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/zip64-sample.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/zipWithDirs.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/data/zipWithEncryption.zip +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/deflater_test.rb +65 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/encryption_test.rb +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/entry_set_test.rb +163 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/entry_test.rb +154 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/errors_test.rb +35 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/extra_field_test.rb +76 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/file_extract_directory_test.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/file_extract_test.rb +83 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/file_permissions_test.rb +65 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/file_split_test.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/file_test.rb +646 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/filesystem/dir_iterator_test.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/filesystem/directory_test.rb +139 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/filesystem/file_mutating_test.rb +87 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/filesystem/file_nonmutating_test.rb +508 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/filesystem/file_stat_test.rb +64 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/gentestfiles.rb +126 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/inflater_test.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/input_stream_test.rb +182 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/ioextras/abstract_input_stream_test.rb +102 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/ioextras/abstract_output_stream_test.rb +106 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/ioextras/fake_io_test.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/local_entry_test.rb +154 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/output_stream_test.rb +128 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/pass_thru_compressor_test.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/pass_thru_decompressor_test.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/path_traversal_test.rb +141 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/samples/example_recursive_test.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/settings_test.rb +95 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/test_helper.rb +234 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/unicode_file_names_and_comments_test.rb +62 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/zip64_full_test.rb +51 -0
- data/vendor/bundle/ruby/2.6.0/gems/rubyzip-1.2.4/test/zip64_support_test.rb +14 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/.document +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/.gitignore +19 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/.travis.yml +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/CHANGELOG.md +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/Gemfile +4 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/LICENSE.txt +22 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/README.md +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/Rakefile +31 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/.sitearchdir.time +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/Makefile +265 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/extconf.rb +50 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/normalizer.hh +139 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/table.hh +13617 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/char_stream.hh +150 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/node.hh +25 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/trie/searcher.hh +194 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf/util.hh +24 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf.cc +75 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf.o +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/ext/unf_ext/unf_ext.so +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/lib/unf_ext/version.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/lib/unf_ext.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/lib/unf_ext.so +0 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/test/helper.rb +18 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/test/normalization-test.txt +112332 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/test/test_unf_ext.rb +41 -0
- data/vendor/bundle/ruby/2.6.0/gems/unf_ext-0.0.7.6/unf_ext.gemspec +42 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/LICENSE +202 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/README.md +276 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/bin/rwinrm +90 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/connection.rb +84 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/connection_opts.rb +90 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/exceptions.rb +88 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/http/response_handler.rb +127 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/http/transport.rb +462 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/http/transport_factory.rb +64 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/output.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/create_pipeline.xml.erb +167 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/fragment.rb +68 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/init_runspace_pool.xml.erb +224 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message.rb +128 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/base.rb +47 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/error_record.rb +66 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/pipeline_host_call.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/pipeline_output.rb +48 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/pipeline_state.rb +38 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/runspacepool_host_call.rb +30 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/runspacepool_state.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data/session_capability.rb +34 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_data.rb +40 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_defragmenter.rb +62 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_factory.rb +74 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/message_fragmenter.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/powershell_output_decoder.rb +142 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/receive_response_reader.rb +95 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/session_capability.xml.erb +7 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/psrp/uuid.rb +39 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/shells/base.rb +187 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/shells/cmd.rb +63 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/shells/power_shell.rb +206 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/shells/retryable.rb +44 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/shells/shell_factory.rb +56 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/version.rb +5 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/base.rb +57 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/cleanup_command.rb +60 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/close_shell.rb +49 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/command.rb +100 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/command_output.rb +75 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/command_output_decoder.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/configuration.rb +44 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/create_pipeline.rb +64 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/create_shell.rb +115 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/header.rb +213 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/init_runspace_pool.rb +96 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/iso8601_duration.rb +58 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/keep_alive.rb +66 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/receive_response_reader.rb +128 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/send_data.rb +66 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/soap.rb +49 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/wql_pull.rb +54 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/wql_query.rb +98 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm/wsmv/write_stdin.rb +86 -0
- data/vendor/bundle/ruby/2.6.0/gems/winrm-2.3.2/lib/winrm.rb +37 -0
- data/vendor/bundle/ruby/2.6.0/specifications/bcrypt_pbkdf-1.0.1.gemspec +49 -0
- data/vendor/bundle/ruby/2.6.0/specifications/domain_name-0.5.20190701.gemspec +46 -0
- data/vendor/bundle/ruby/2.6.0/specifications/gssapi-1.3.0.gemspec +36 -0
- data/vendor/bundle/ruby/2.6.0/specifications/mime-types-3.3.gemspec +84 -0
- data/vendor/bundle/ruby/2.6.0/specifications/mime-types-data-3.2019.0904.gemspec +60 -0
- data/vendor/bundle/ruby/2.6.0/specifications/rubyzip-1.2.4.gemspec +44 -0
- data/vendor/bundle/ruby/2.6.0/specifications/unf_ext-0.0.7.6.gemspec +51 -0
- data/vendor/bundle/ruby/2.6.0/specifications/winrm-2.3.2.gemspec +73 -0
- data/version.txt +1 -1
- metadata +365 -6
- data/templates/nfs/exports.erb +0 -5
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'log4r'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module DockerProvider
|
5
|
+
module Action
|
6
|
+
class DestroyNetwork
|
7
|
+
|
8
|
+
@@lock = Mutex.new
|
9
|
+
|
10
|
+
def initialize(app, env)
|
11
|
+
@app = app
|
12
|
+
@logger = Log4r::Logger.new('vagrant::plugins::docker::network')
|
13
|
+
end
|
14
|
+
|
15
|
+
def call(env)
|
16
|
+
# If we are using a host VM, then don't worry about it
|
17
|
+
machine = env[:machine]
|
18
|
+
if machine.provider.host_vm?
|
19
|
+
@logger.debug("Not setting up networks because docker host_vm is in use")
|
20
|
+
return @app.call(env)
|
21
|
+
end
|
22
|
+
|
23
|
+
@@lock.synchronize do
|
24
|
+
machine.env.lock("docker-network-destroy", retry: true) do
|
25
|
+
machine.config.vm.networks.each do |type, options|
|
26
|
+
next if type != :private_network && type != :public_network
|
27
|
+
|
28
|
+
vagrant_networks = machine.provider.driver.list_network_names.find_all do |n|
|
29
|
+
n.start_with?("vagrant_network")
|
30
|
+
end
|
31
|
+
|
32
|
+
vagrant_networks.each do |network_name|
|
33
|
+
if machine.provider.driver.existing_named_network?(network_name) &&
|
34
|
+
!machine.provider.driver.network_used?(network_name)
|
35
|
+
env[:ui].info(I18n.t("docker_provider.network_destroy", network_name: network_name))
|
36
|
+
machine.provider.driver.rm_network(network_name)
|
37
|
+
else
|
38
|
+
@logger.debug("Network #{network_name} not found or in use")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
@app.call(env)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,355 @@
|
|
1
|
+
require 'ipaddr'
|
2
|
+
require 'log4r'
|
3
|
+
|
4
|
+
require 'vagrant/util/scoped_hash_override'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module DockerProvider
|
8
|
+
module Action
|
9
|
+
class PrepareNetworks
|
10
|
+
|
11
|
+
include Vagrant::Util::ScopedHashOverride
|
12
|
+
|
13
|
+
@@lock = Mutex.new
|
14
|
+
|
15
|
+
def initialize(app, env)
|
16
|
+
@app = app
|
17
|
+
@logger = Log4r::Logger.new('vagrant::plugins::docker::preparenetworks')
|
18
|
+
end
|
19
|
+
|
20
|
+
# Generate CLI arguments for creating the docker network.
|
21
|
+
#
|
22
|
+
# @param [Hash] options Options from the network config
|
23
|
+
# @returns[Array<String>] Network create arguments
|
24
|
+
def generate_create_cli_arguments(options)
|
25
|
+
options.map do |key, value|
|
26
|
+
# If value is false, option is not set
|
27
|
+
next if value.to_s == "false"
|
28
|
+
# If value is true, consider feature flag with no value
|
29
|
+
opt = value.to_s == "true" ? [] : [value]
|
30
|
+
opt.unshift("--#{key.to_s.tr("_", "-")}")
|
31
|
+
end.flatten.compact
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [Array<Socket::Ifaddr>] interface list
|
35
|
+
def list_interfaces
|
36
|
+
Socket.getifaddrs.find_all do |i|
|
37
|
+
i.addr.ip? && !i.addr.ipv4_loopback? &&
|
38
|
+
!i.addr.ipv6_loopback? && !i.addr.ipv6_linklocal?
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# Validates that a network name exists. If it does not
|
43
|
+
# exist, an exception is raised.
|
44
|
+
#
|
45
|
+
# @param [String] network_name Name of existing network
|
46
|
+
# @param [Hash] env Local call env
|
47
|
+
# @return [Boolean]
|
48
|
+
def validate_network_name!(network_name, env)
|
49
|
+
if !env[:machine].provider.driver.existing_named_network?(network_name)
|
50
|
+
raise Errors::NetworkNameUndefined,
|
51
|
+
network_name: network_name
|
52
|
+
end
|
53
|
+
true
|
54
|
+
end
|
55
|
+
|
56
|
+
# Validates that the provided options are compatible with a
|
57
|
+
# pre-existing network. Raises exceptions on invalid configurations
|
58
|
+
#
|
59
|
+
# @param [String] network_name Name of the network
|
60
|
+
# @param [Hash] root_options Root networking options
|
61
|
+
# @param [Hash] network_options Docker scoped networking options
|
62
|
+
# @param [Driver] driver Docker driver
|
63
|
+
# @return [Boolean]
|
64
|
+
def validate_network_configuration!(network_name, root_options, network_options, driver)
|
65
|
+
if root_options[:ip] &&
|
66
|
+
driver.network_containing_address(root_options[:ip]) != network_name
|
67
|
+
raise Errors::NetworkAddressInvalid,
|
68
|
+
address: root_options[:ip],
|
69
|
+
network_name: network_name
|
70
|
+
end
|
71
|
+
if network_options[:subnet] &&
|
72
|
+
driver.network_containing_address(network_options[:subnet]) != network_name
|
73
|
+
raise Errors::NetworkSubnetInvalid,
|
74
|
+
subnet: network_options[:subnet],
|
75
|
+
network_name: network_name
|
76
|
+
end
|
77
|
+
true
|
78
|
+
end
|
79
|
+
|
80
|
+
# Generate configuration for private network
|
81
|
+
#
|
82
|
+
# @param [Hash] root_options Root networking options
|
83
|
+
# @param [Hash] net_options Docker scoped networking options
|
84
|
+
# @param [Hash] env Local call env
|
85
|
+
# @return [String, Hash] Network name and updated network_options
|
86
|
+
def process_private_network(root_options, network_options, env)
|
87
|
+
if root_options[:name] && validate_network_name!(root_options[:name], env)
|
88
|
+
network_name = root_options[:name]
|
89
|
+
end
|
90
|
+
|
91
|
+
if root_options[:type].to_s == "dhcp"
|
92
|
+
if !root_options[:ip] && !root_options[:subnet]
|
93
|
+
network_name = "vagrant_network" if !network_name
|
94
|
+
return [network_name, network_options]
|
95
|
+
end
|
96
|
+
if root_options[:subnet]
|
97
|
+
addr = IPAddr.new(root_options[:subnet])
|
98
|
+
root_options[:netmask] = addr.prefix
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
if root_options[:ip]
|
103
|
+
addr = IPAddr.new(root_options[:ip])
|
104
|
+
elsif addr.nil?
|
105
|
+
raise Errors::NetworkIPAddressRequired
|
106
|
+
end
|
107
|
+
|
108
|
+
# If address is ipv6, enable ipv6 support
|
109
|
+
network_options[:ipv6] = addr.ipv6?
|
110
|
+
|
111
|
+
# If no mask is provided, attempt to locate any existing
|
112
|
+
# network which contains the assigned IP address
|
113
|
+
if !root_options[:netmask] && !network_name
|
114
|
+
network_name = env[:machine].provider.driver.
|
115
|
+
network_containing_address(root_options[:ip])
|
116
|
+
# When no existing network is found, we are creating
|
117
|
+
# a new network. Since no mask was provided, default
|
118
|
+
# to /24 for ipv4 and /64 for ipv6
|
119
|
+
if !network_name
|
120
|
+
root_options[:netmask] = addr.ipv4? ? 24 : 64
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# With no network name, process options to find or determine
|
125
|
+
# name for new network
|
126
|
+
if !network_name
|
127
|
+
if !root_options[:subnet]
|
128
|
+
# Only generate a subnet if not given one
|
129
|
+
subnet = IPAddr.new("#{addr}/#{root_options[:netmask]}")
|
130
|
+
network = "#{subnet}/#{root_options[:netmask]}"
|
131
|
+
else
|
132
|
+
network = root_options[:subnet]
|
133
|
+
end
|
134
|
+
|
135
|
+
network_options[:subnet] = network
|
136
|
+
existing_network = env[:machine].provider.driver.
|
137
|
+
network_defined?(network)
|
138
|
+
|
139
|
+
if !existing_network
|
140
|
+
network_name = "vagrant_network_#{network}"
|
141
|
+
else
|
142
|
+
if !existing_network.to_s.start_with?("vagrant_network")
|
143
|
+
env[:ui].warn(I18n.t("docker_provider.subnet_exists",
|
144
|
+
network_name: existing_network,
|
145
|
+
subnet: network))
|
146
|
+
end
|
147
|
+
network_name = existing_network
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
[network_name, network_options]
|
152
|
+
end
|
153
|
+
|
154
|
+
# Generate configuration for public network
|
155
|
+
#
|
156
|
+
# @param [Hash] root_options Root networking options
|
157
|
+
# @param [Hash] net_options Docker scoped networking options
|
158
|
+
# @param [Hash] env Local call env
|
159
|
+
# @return [String, Hash] Network name and updated network_options
|
160
|
+
def process_public_network(root_options, net_options, env)
|
161
|
+
if root_options[:name] && validate_network_name!(root_options[:name], env)
|
162
|
+
network_name = root_options[:name]
|
163
|
+
end
|
164
|
+
if !network_name
|
165
|
+
valid_interfaces = list_interfaces
|
166
|
+
if valid_interfaces.empty?
|
167
|
+
raise Errors::NetworkNoInterfaces
|
168
|
+
elsif valid_interfaces.size == 1
|
169
|
+
bridge_interface = valid_interfaces.first
|
170
|
+
elsif i = valid_interfaces.detect{|i| Array(root_options[:bridge]).include?(i.name) }
|
171
|
+
bridge_interface = i
|
172
|
+
end
|
173
|
+
if !bridge_interface
|
174
|
+
env[:ui].info(I18n.t("vagrant.actions.vm.bridged_networking.available"),
|
175
|
+
prefix: false)
|
176
|
+
valid_interfaces.each_with_index do |int, i|
|
177
|
+
env[:ui].info("#{i + 1}) #{int.name}", prefix: false)
|
178
|
+
end
|
179
|
+
env[:ui].info(I18n.t(
|
180
|
+
"vagrant.actions.vm.bridged_networking.choice_help") + "\n",
|
181
|
+
prefix: false
|
182
|
+
)
|
183
|
+
end
|
184
|
+
while !bridge_interface
|
185
|
+
choice = env[:ui].ask(
|
186
|
+
I18n.t("vagrant.actions.vm.bridged_networking.select_interface") + " ",
|
187
|
+
prefix: false)
|
188
|
+
bridge_interface = valid_interfaces[choice.to_i - 1]
|
189
|
+
end
|
190
|
+
base_opts = Vagrant::Util::HashWithIndifferentAccess.new
|
191
|
+
base_opts[:opt] = "parent=#{bridge_interface.name}"
|
192
|
+
subnet = IPAddr.new(bridge_interface.addr.ip_address <<
|
193
|
+
"/" << bridge_interface.netmask.ip_unpack.first)
|
194
|
+
base_opts[:subnet] = "#{subnet}/#{subnet.prefix}"
|
195
|
+
subnet_addr = IPAddr.new(base_opts[:subnet])
|
196
|
+
base_opts[:driver] = "macvlan"
|
197
|
+
base_opts[:gateway] = subnet_addr.succ.to_s
|
198
|
+
base_opts[:ipv6] = subnet_addr.ipv6?
|
199
|
+
network_options = base_opts.merge(net_options)
|
200
|
+
|
201
|
+
# Check if network already exists for this subnet
|
202
|
+
network_name = env[:machine].provider.driver.
|
203
|
+
network_containing_address(network_options[:gateway])
|
204
|
+
if !network_name
|
205
|
+
network_name = "vagrant_network_public_#{bridge_interface.name}"
|
206
|
+
end
|
207
|
+
|
208
|
+
# If the network doesn't already exist, gather available address range
|
209
|
+
# within subnet which docker can provide addressing
|
210
|
+
if !env[:machine].provider.driver.existing_named_network?(network_name)
|
211
|
+
if !net_options[:gateway]
|
212
|
+
network_options[:gateway] = request_public_gateway(
|
213
|
+
network_options, bridge_interface.name, env)
|
214
|
+
end
|
215
|
+
network_options[:ip_range] = request_public_iprange(
|
216
|
+
network_options, bridge_interface.name, env)
|
217
|
+
end
|
218
|
+
end
|
219
|
+
[network_name, network_options]
|
220
|
+
end
|
221
|
+
|
222
|
+
# Request the gateway address for the public network
|
223
|
+
#
|
224
|
+
# @param [Hash] network_options Docker scoped networking options
|
225
|
+
# @param [String] interface The bridge interface used
|
226
|
+
# @param [Hash] env Local call env
|
227
|
+
# @return [String] Gateway address
|
228
|
+
def request_public_gateway(network_options, interface, env)
|
229
|
+
subnet = IPAddr.new(network_options[:subnet])
|
230
|
+
gateway = nil
|
231
|
+
while !gateway
|
232
|
+
gateway = env[:ui].ask(I18n.t(
|
233
|
+
"docker_provider.network_bridge_gateway_request",
|
234
|
+
interface: interface,
|
235
|
+
default_gateway: network_options[:gateway]) + " ",
|
236
|
+
prefix: false
|
237
|
+
).strip
|
238
|
+
if gateway.empty?
|
239
|
+
gateway = network_options[:gateway]
|
240
|
+
end
|
241
|
+
begin
|
242
|
+
gateway = IPAddr.new(gateway)
|
243
|
+
if !subnet.include?(gateway)
|
244
|
+
env[:ui].warn(I18n.t("docker_provider.network_bridge_gateway_outofbounds",
|
245
|
+
gateway: gateway,
|
246
|
+
subnet: network_options[:subnet]) + "\n", prefix: false)
|
247
|
+
end
|
248
|
+
rescue IPAddr::InvalidAddressError
|
249
|
+
env[:ui].warn(I18n.t("docker_provider.network_bridge_gateway_invalid",
|
250
|
+
gateway: gateway) + "\n", prefix: false)
|
251
|
+
gateway = nil
|
252
|
+
end
|
253
|
+
end
|
254
|
+
gateway.to_s
|
255
|
+
end
|
256
|
+
|
257
|
+
# Request the IP range allowed for use by docker when creating a new
|
258
|
+
# public network
|
259
|
+
#
|
260
|
+
# @param [Hash] network_options Docker scoped networking options
|
261
|
+
# @param [String] interface The bridge interface used
|
262
|
+
# @param [Hash] env Local call env
|
263
|
+
# @return [String] Address range
|
264
|
+
def request_public_iprange(network_options, interface, env)
|
265
|
+
return network_options[:ip_range] if network_options[:ip_range]
|
266
|
+
subnet = IPAddr.new(network_options[:subnet])
|
267
|
+
env[:ui].info(I18n.t(
|
268
|
+
"docker_provider.network_bridge_iprange_info") + "\n",
|
269
|
+
prefix: false
|
270
|
+
)
|
271
|
+
range = nil
|
272
|
+
while !range
|
273
|
+
range = env[:ui].ask(I18n.t(
|
274
|
+
"docker_provider.network_bridge_iprange_request",
|
275
|
+
interface: interface,
|
276
|
+
default_range: network_options[:subnet]) + " ",
|
277
|
+
prefix: false
|
278
|
+
).strip
|
279
|
+
if range.empty?
|
280
|
+
range = network_options[:subnet]
|
281
|
+
end
|
282
|
+
begin
|
283
|
+
range = IPAddr.new(range)
|
284
|
+
if !subnet.include?(range)
|
285
|
+
puts "we in here"
|
286
|
+
env[:ui].warn(I18n.t(
|
287
|
+
"docker_provider.network_bridge_iprange_outofbounds",
|
288
|
+
subnet: network_options[:subnet],
|
289
|
+
range: "#{range}/#{range.prefix}"
|
290
|
+
) + "\n", prefix: false)
|
291
|
+
range = nil
|
292
|
+
end
|
293
|
+
rescue IPAddr::InvalidAddressError
|
294
|
+
env[:ui].warn(I18n.t(
|
295
|
+
"docker_provider.network_bridge_iprange_invalid",
|
296
|
+
range: range) + "\n", prefix: false)
|
297
|
+
range = nil
|
298
|
+
end
|
299
|
+
end
|
300
|
+
"#{range}/#{range.prefix}"
|
301
|
+
end
|
302
|
+
|
303
|
+
# Execute the action
|
304
|
+
def call(env)
|
305
|
+
# If we are using a host VM, then don't worry about it
|
306
|
+
machine = env[:machine]
|
307
|
+
if machine.provider.host_vm?
|
308
|
+
@logger.debug("Not setting up networks because docker host_vm is in use")
|
309
|
+
return @app.call(env)
|
310
|
+
end
|
311
|
+
|
312
|
+
connections = {}
|
313
|
+
@@lock.synchronize do
|
314
|
+
machine.env.lock("docker-network-create", retry: true) do
|
315
|
+
env[:ui].info(I18n.t("docker_provider.network_create"))
|
316
|
+
machine.config.vm.networks.each_with_index do |net_info, net_idx|
|
317
|
+
type, options = net_info
|
318
|
+
network_options = scoped_hash_override(options, :docker_network)
|
319
|
+
network_options.delete_if{|k,_| options.key?(k)}
|
320
|
+
|
321
|
+
case type
|
322
|
+
when :public_network
|
323
|
+
network_name, network_options = process_public_network(
|
324
|
+
options, network_options, env)
|
325
|
+
when :private_network
|
326
|
+
network_name, network_options = process_private_network(
|
327
|
+
options, network_options, env)
|
328
|
+
else
|
329
|
+
next # unsupported type so ignore
|
330
|
+
end
|
331
|
+
|
332
|
+
if !network_name
|
333
|
+
raise Errors::NetworkInvalidOption, container: machine.name
|
334
|
+
end
|
335
|
+
|
336
|
+
if !machine.provider.driver.existing_named_network?(network_name)
|
337
|
+
@logger.debug("Creating network #{network_name}")
|
338
|
+
cli_opts = generate_create_cli_arguments(network_options)
|
339
|
+
machine.provider.driver.create_network(network_name, cli_opts)
|
340
|
+
else
|
341
|
+
@logger.debug("Network #{network_name} already created")
|
342
|
+
validate_network_configuration!(network_name, options, network_options, machine.provider.driver)
|
343
|
+
end
|
344
|
+
connections[net_idx] = network_name
|
345
|
+
end
|
346
|
+
end
|
347
|
+
end
|
348
|
+
|
349
|
+
env[:docker_connects] = connections
|
350
|
+
@app.call(env)
|
351
|
+
end
|
352
|
+
end
|
353
|
+
end
|
354
|
+
end
|
355
|
+
end
|
@@ -161,6 +161,7 @@ module VagrantPlugins
|
|
161
161
|
b4.use action_halt
|
162
162
|
b4.use HostMachineSyncFoldersDisable
|
163
163
|
b4.use Destroy
|
164
|
+
b4.use DestroyNetwork
|
164
165
|
b4.use DestroyBuildImage
|
165
166
|
else
|
166
167
|
b4.use Message,
|
@@ -243,6 +244,7 @@ module VagrantPlugins
|
|
243
244
|
b2.use PrepareNFSValidIds
|
244
245
|
b2.use SyncedFolderCleanup
|
245
246
|
b2.use PrepareNFSSettings
|
247
|
+
b2.use PrepareNetworks
|
246
248
|
b2.use Login
|
247
249
|
b2.use Build
|
248
250
|
|
@@ -265,6 +267,7 @@ module VagrantPlugins
|
|
265
267
|
end
|
266
268
|
end
|
267
269
|
|
270
|
+
b2.use ConnectNetworks
|
268
271
|
b2.use Start
|
269
272
|
b2.use WaitForRunning
|
270
273
|
|
@@ -292,9 +295,11 @@ module VagrantPlugins
|
|
292
295
|
action_root = Pathname.new(File.expand_path("../action", __FILE__))
|
293
296
|
autoload :Build, action_root.join("build")
|
294
297
|
autoload :CompareSyncedFolders, action_root.join("compare_synced_folders")
|
298
|
+
autoload :ConnectNetworks, action_root.join("connect_networks")
|
295
299
|
autoload :Create, action_root.join("create")
|
296
300
|
autoload :Destroy, action_root.join("destroy")
|
297
301
|
autoload :DestroyBuildImage, action_root.join("destroy_build_image")
|
302
|
+
autoload :DestroyNetwork, action_root.join("destroy_network")
|
298
303
|
autoload :ForwardedPorts, action_root.join("forwarded_ports")
|
299
304
|
autoload :HasSSH, action_root.join("has_ssh")
|
300
305
|
autoload :HostMachine, action_root.join("host_machine")
|
@@ -308,12 +313,13 @@ module VagrantPlugins
|
|
308
313
|
autoload :IsBuild, action_root.join("is_build")
|
309
314
|
autoload :IsHostMachineCreated, action_root.join("is_host_machine_created")
|
310
315
|
autoload :Login, action_root.join("login")
|
311
|
-
autoload :
|
312
|
-
autoload :PrepareSSH, action_root.join("prepare_ssh")
|
313
|
-
autoload :Stop, action_root.join("stop")
|
316
|
+
autoload :PrepareNetworks, action_root.join("prepare_networks")
|
314
317
|
autoload :PrepareNFSValidIds, action_root.join("prepare_nfs_valid_ids")
|
315
318
|
autoload :PrepareNFSSettings, action_root.join("prepare_nfs_settings")
|
319
|
+
autoload :PrepareSSH, action_root.join("prepare_ssh")
|
320
|
+
autoload :Pull, action_root.join("pull")
|
316
321
|
autoload :Start, action_root.join("start")
|
322
|
+
autoload :Stop, action_root.join("stop")
|
317
323
|
autoload :WaitForRunning, action_root.join("wait_for_running")
|
318
324
|
end
|
319
325
|
end
|
@@ -102,7 +102,19 @@ module VagrantPlugins
|
|
102
102
|
# will be fixed someday and the gsub below can be removed.
|
103
103
|
host.gsub!(/^[^A-Za-z]+/, "")
|
104
104
|
end
|
105
|
-
host
|
105
|
+
# if host path is a volume key, don't expand it.
|
106
|
+
# if both exist (a path and a key) show warning and move on
|
107
|
+
# otherwise assume it's a realative path and expand the host path
|
108
|
+
compose_config = get_composition
|
109
|
+
if compose_config["volumes"] && compose_config["volumes"].keys.include?(host)
|
110
|
+
if File.directory?(@machine.env.cwd.join(host).to_s)
|
111
|
+
@machine.env.ui.warn(I18n.t("docker_provider.volume_path_not_expanded",
|
112
|
+
host: host))
|
113
|
+
end
|
114
|
+
else
|
115
|
+
@logger.debug("Path expanding #{host} to current Vagrant working dir instead of docker-compose config file directory")
|
116
|
+
host = @machine.env.cwd.join(host).to_s
|
117
|
+
end
|
106
118
|
"#{host}:#{guest}"
|
107
119
|
end
|
108
120
|
cmd = Array(params.fetch(:cmd))
|
@@ -152,21 +152,25 @@ module VagrantPlugins
|
|
152
152
|
def rmi(id)
|
153
153
|
execute('docker', 'rmi', id)
|
154
154
|
return true
|
155
|
-
rescue
|
155
|
+
rescue => e
|
156
156
|
return false if e.to_s.include?("is using it")
|
157
157
|
raise if !e.to_s.include?("No such image")
|
158
158
|
end
|
159
159
|
|
160
|
+
# Inspect the provided container
|
161
|
+
#
|
162
|
+
# @param [String] cid ID or name of container
|
163
|
+
# @return [Hash]
|
160
164
|
def inspect_container(cid)
|
161
|
-
|
162
|
-
# has been brought up?
|
163
|
-
@data ||= JSON.parse(execute('docker', 'inspect', cid)).first
|
165
|
+
JSON.parse(execute('docker', 'inspect', cid)).first
|
164
166
|
end
|
165
167
|
|
168
|
+
# @return [Array<String>] list of all container IDs
|
166
169
|
def all_containers
|
167
170
|
execute('docker', 'ps', '-a', '-q', '--no-trunc').to_s.split
|
168
171
|
end
|
169
172
|
|
173
|
+
# @return [String] IP address of the docker bridge
|
170
174
|
def docker_bridge_ip
|
171
175
|
output = execute('/sbin/ip', '-4', 'addr', 'show', 'scope', 'global', 'docker0')
|
172
176
|
if output =~ /^\s+inet ([0-9.]+)\/[0-9]+\s+/
|
@@ -177,9 +181,149 @@ module VagrantPlugins
|
|
177
181
|
end
|
178
182
|
end
|
179
183
|
|
184
|
+
# @param [String] network - name of network to connect conatiner to
|
185
|
+
# @param [String] cid - container id
|
186
|
+
# @param [Array] opts - An array of flags used for listing networks
|
187
|
+
def connect_network(network, cid, opts=nil)
|
188
|
+
command = ['docker', 'network', 'connect', network, cid].push(*opts)
|
189
|
+
output = execute(*command)
|
190
|
+
output
|
191
|
+
end
|
192
|
+
|
193
|
+
# @param [String] network - name of network to create
|
194
|
+
# @param [Array] opts - An array of flags used for listing networks
|
195
|
+
def create_network(network, opts=nil)
|
196
|
+
command = ['docker', 'network', 'create', network].push(*opts)
|
197
|
+
output = execute(*command)
|
198
|
+
output
|
199
|
+
end
|
200
|
+
|
201
|
+
# @param [String] network - name of network to disconnect container from
|
202
|
+
# @param [String] cid - container id
|
203
|
+
def disconnect_network(network, cid)
|
204
|
+
command = ['docker', 'network', 'disconnect', network, cid, "--force"]
|
205
|
+
output = execute(*command)
|
206
|
+
output
|
207
|
+
end
|
208
|
+
|
209
|
+
# @param [Array] networks - list of networks to inspect
|
210
|
+
# @param [Array] opts - An array of flags used for listing networks
|
211
|
+
def inspect_network(network, opts=nil)
|
212
|
+
command = ['docker', 'network', 'inspect'] + Array(network)
|
213
|
+
command = command.push(*opts)
|
214
|
+
output = execute(*command)
|
215
|
+
begin
|
216
|
+
JSON.load(output)
|
217
|
+
rescue JSON::ParserError
|
218
|
+
@logger.warn("Failed to parse network inspection of network: #{network}")
|
219
|
+
@logger.debug("Failed network output content: `#{output.inspect}`")
|
220
|
+
nil
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
# @param [String] opts - Flags used for listing networks
|
225
|
+
def list_network(*opts)
|
226
|
+
command = ['docker', 'network', 'ls', *opts]
|
227
|
+
output = execute(*command)
|
228
|
+
output
|
229
|
+
end
|
230
|
+
|
231
|
+
# Will delete _all_ defined but unused networks in the docker engine. Even
|
232
|
+
# networks not created by Vagrant.
|
233
|
+
#
|
234
|
+
# @param [Array] opts - An array of flags used for listing networks
|
235
|
+
def prune_network(opts=nil)
|
236
|
+
command = ['docker', 'network', 'prune', '--force'].push(*opts)
|
237
|
+
output = execute(*command)
|
238
|
+
output
|
239
|
+
end
|
240
|
+
|
241
|
+
# Delete network(s)
|
242
|
+
#
|
243
|
+
# @param [String] network - name of network to remove
|
244
|
+
def rm_network(*network)
|
245
|
+
command = ['docker', 'network', 'rm', *network]
|
246
|
+
output = execute(*command)
|
247
|
+
output
|
248
|
+
end
|
249
|
+
|
250
|
+
# @param [Array] opts - An array of flags used for listing networks
|
180
251
|
def execute(*cmd, **opts, &block)
|
181
252
|
@executor.execute(*cmd, **opts, &block)
|
182
253
|
end
|
254
|
+
|
255
|
+
# ######################
|
256
|
+
# Docker network helpers
|
257
|
+
# ######################
|
258
|
+
|
259
|
+
# Determines if a given network has been defined through vagrant with a given
|
260
|
+
# subnet string
|
261
|
+
#
|
262
|
+
# @param [String] subnet_string - Subnet to look for
|
263
|
+
# @return [String] network name - Name of network with requested subnet.`nil` if not found
|
264
|
+
def network_defined?(subnet_string)
|
265
|
+
all_networks = list_network_names
|
266
|
+
|
267
|
+
network_info = inspect_network(all_networks)
|
268
|
+
network_info.each do |network|
|
269
|
+
config = network["IPAM"]["Config"]
|
270
|
+
if (config.size > 0 &&
|
271
|
+
config.first["Subnet"] == subnet_string)
|
272
|
+
@logger.debug("Found existing network #{network["Name"]} already configured with #{subnet_string}")
|
273
|
+
return network["Name"]
|
274
|
+
end
|
275
|
+
end
|
276
|
+
return nil
|
277
|
+
end
|
278
|
+
|
279
|
+
# Locate network which contains given address
|
280
|
+
#
|
281
|
+
# @param [String] address IP address
|
282
|
+
# @return [String] network name
|
283
|
+
def network_containing_address(address)
|
284
|
+
names = list_network_names
|
285
|
+
networks = inspect_network(names)
|
286
|
+
return if !networks
|
287
|
+
networks.each do |net|
|
288
|
+
next if !net["IPAM"]
|
289
|
+
config = net["IPAM"]["Config"]
|
290
|
+
next if !config || config.size < 1
|
291
|
+
config.each do |opts|
|
292
|
+
subnet = IPAddr.new(opts["Subnet"])
|
293
|
+
if subnet.include?(address)
|
294
|
+
return net["Name"]
|
295
|
+
end
|
296
|
+
end
|
297
|
+
end
|
298
|
+
nil
|
299
|
+
end
|
300
|
+
|
301
|
+
# Looks to see if a docker network has already been defined
|
302
|
+
# with the given name
|
303
|
+
#
|
304
|
+
# @param [String] network_name - name of network to look for
|
305
|
+
# @return [Bool]
|
306
|
+
def existing_named_network?(network_name)
|
307
|
+
result = list_network_names
|
308
|
+
result.any?{|net_name| net_name == network_name}
|
309
|
+
end
|
310
|
+
|
311
|
+
# @return [Array<String>] list of all docker networks
|
312
|
+
def list_network_names
|
313
|
+
list_network("--format={{.Name}}").split("\n").map(&:strip)
|
314
|
+
end
|
315
|
+
|
316
|
+
# Returns true or false if network is in use or not.
|
317
|
+
# Nil if Vagrant fails to receive proper JSON from `docker network inspect`
|
318
|
+
#
|
319
|
+
# @param [String] network - name of network to look for
|
320
|
+
# @return [Bool,nil]
|
321
|
+
def network_used?(network)
|
322
|
+
result = inspect_network(network)
|
323
|
+
return nil if !result
|
324
|
+
return result.first["Containers"].size > 0
|
325
|
+
end
|
326
|
+
|
183
327
|
end
|
184
328
|
end
|
185
329
|
end
|
@@ -45,6 +45,34 @@ module VagrantPlugins
|
|
45
45
|
error_key(:docker_provider_nfs_without_privileged)
|
46
46
|
end
|
47
47
|
|
48
|
+
class NetworkAddressInvalid < DockerError
|
49
|
+
error_key(:network_address_invalid)
|
50
|
+
end
|
51
|
+
|
52
|
+
class NetworkIPAddressRequired < DockerError
|
53
|
+
error_key(:network_address_required)
|
54
|
+
end
|
55
|
+
|
56
|
+
class NetworkSubnetInvalid < DockerError
|
57
|
+
error_key(:network_subnet_invalid)
|
58
|
+
end
|
59
|
+
|
60
|
+
class NetworkInvalidOption < DockerError
|
61
|
+
error_key(:network_invalid_option)
|
62
|
+
end
|
63
|
+
|
64
|
+
class NetworkNameMissing < DockerError
|
65
|
+
error_key(:network_name_missing)
|
66
|
+
end
|
67
|
+
|
68
|
+
class NetworkNameUndefined < DockerError
|
69
|
+
error_key(:network_name_undefined)
|
70
|
+
end
|
71
|
+
|
72
|
+
class NetworkNoInterfaces < DockerError
|
73
|
+
error_key(:network_no_interfaces)
|
74
|
+
end
|
75
|
+
|
48
76
|
class PackageNotSupported < DockerError
|
49
77
|
error_key(:package_not_supported)
|
50
78
|
end
|